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 |