블로그는 나의 힘!
[ Programing ]/Lua Scirpt2022. 3. 5. 01:07

1-1. 특징

 -. 변수를 미리 선언하지 않고도 사용 가능.
     : 변수를 선언해도 실제로 사용하는 부분에서 할당 된다.

 -. 변수의 형식을 지정할 필요가 없음.
    : 변수의 형식을 지정하고 싶어도 불가능하다, 루아가 일아서 지정.

 * 변수와 변수의 형식에 관리에 유의해야 함.

 

1-2. 지역변수와 전역변수

 -. 기본적으로 모든 루아 변수는 본질적으로 전역 변수 임.
    : 스크립트 전체에서 접근할 수 있으며 끝날 때 까지 유지

 -. 가능한 곳에서는 항상 지역 변수를 사용하는것이 좋음.
    : local 키워드를 이용하여 지역 변수 선언.

 ex)
 local myValue = 2     -- 초기값이 2인 지역 변수.


 

2. nil

 -. 어떤 값도 배정되지 않음. (NULL과 유사)

 -. 변수에 nil을 배정하면 삭제된 셈이 된다.

 ex)
 myValue = nil     -- 변수를 삭제한다.
 local myValue     -- nil를 초기값으로 지역변수를 만듬.


 

3. boolean

 -. true 아니면 false 값만을 가짐.

 -. nil과 false만 false이고 나머지는 true 임.

 ex)
 local myValue

 if myValue == false then
     myValue = true
 end




4. string

 -. 강력한 문자열 조작 함수 제공.

 -. 역슬래시를 이용하여 특수문자를 지정.

\a \v 수직 탭
\b 백스페이스 \\ 역슬래시
\f 폼 피드 \" 큰따옴표
\n 줄 바꿈 \' 작은따옴표
\r 캐리지 리턴 \[ 왼쪽 대괄호
\t 수평 탭 \] 오른쪽 대괄호

 -. 가능한(그리고 의미가 있는) 경우 루아는 수치와 문자열을 자동적으로 상호 변환.

 ex)
 print("8"+8)     --> 16
 print("8+8")     --> 8+8 
 print("hello world" + 8)     --> ERROR




5. number

 -. 루아에서 수치는 모두 배정도 부종소수점 값이다.
 -. 8Byte.

 -. 버전 5.1에서 정수 지원 예정.


 

 
6. table

 -. table은 연관 배열(associative arrays)로 구현.

 -. number과 string을 모두 인덱스 할 수 있으나, nil은 제외.

 -. 크기가 고정되어 있지 않음, 동적 할당.

 -. 루아에서 table은 값도 변수도 아닌 객체 임.
    : 동적으로 할당되는 객체

 -. 사이즈 체크는 #[변수] 단, nil이 중간에 있으면 거기 까지 사이즈로 체크.

 
 ex)
 -- table을 생성
 a = {} 

 k = "x"

 -- new entry, key="x", value=10
 a[k] = 10 

 -- new entry, key=20, value="greate"

 a[20] = "great" 

 print(a["x"])     --> 10

 k = 20
 print(a[k])     --> "great"

  -- entry "x"의 증가

 a["x"] = a["x"]+1
 print(a["x"])     --> 11

      -. table은 항상 익명(anonymous)임.
            : 변수와 그 변수를 잡고 있는 table의 관계는 고정적이지 않음.

 
 ex)
 a = {}
 a["x"] = 10

 -- 'b'에게 ‘a'와 같은 table을 제공.

 b = a 
 print(b["x"])     --> 10

 b["x"] = 20
 print(a["x"])     --> 20

 -- 'b'는 여전히 table을 제공
 a = nil 


      -. nil을 대입하여 동적 할당을 해제하며, 자동적으로 처리 됨.
      -. 다른 타입의 값에 대해서는 새로운 entry를 생성.

 
 ex)
 a = {} 

 -- 100 개의 새로운 entries
 for i=1, 1000 do 
      a[i] = I*2 
 end

 print(a[9])     --> 18

 a["x"] = 10
 print(a["x"])     --> 10
 print(a["y"])     --> 11

      -. table["name"] == table.name

 
 ex)
 -- a["x"] = 10 
 a.x = 10 


 
 ex)
 a = {} 

 a[100] = 1
 print(#a)     --> 0



 

* 참조 *

-- 주석
     --> 결과 예측






[출처] Lua - 03. 변수(Variables)|작성자 악마

'[ Programing ] > Lua Scirpt' 카테고리의 다른 글

Lua - 표준 라이브러리  (0) 2022.03.06
Lua - 명령문(Statements)  (0) 2022.03.06
Lua - 연산자(Expressions)  (0) 2022.03.06
Lua - 함수(Function)  (0) 2022.03.05
Lua Script 배우기  (0) 2022.03.05
Posted by Mister_Q