루아에서 사용하는 8가지의 type 에 대해서 알아 보겠습니다.
- number
- string
- boolean
- table
- function
- nil
- userdata
- thread
Numbers
루아는 사칙연산(더하기/빼기/곱하기/나누기)에 적용하는 숫자를 제공 합니다.
print(2+2)
4
print(2-7)
-5
print(7*8)
56
print(7/8)
0.875
주의 할 점은 루아에서의 숫자는 정수가 없습니다. 즉 정수 같지만, 실수로 처리 합니다.
즉 정수든 실수든 모두 그냥 number 입니다.
Number 는 = (대입 연산자) 에 의하여 변수에 대입될 수 있습니다.
x = 7
print(x)
7
변수는 할당 될때 생성 됩니다.
c/c++ 에서는 변수가 할당될때는 여러 부분에서 있습니다. 컴파일시/로딩시/실행중 등등..
그러나 루아에서는 변수의 선언이 없습니다. 또한 컴파일러가 아니기에
변수는 변수에 어떠한 값이 할당될때 생성이 됩니다.
x = 10 -- 이때 변수 x 가 할당 됩니다. 숫자로
x = "aaaa" -- 이때 변수 x 가 다시 할당 됩니다. 문자열로
Strings
루아는 문자열(텍스트 형)을 지원 합니다.
print("hello")
hello
문자열 역시 변수에 할당될 수 있습니다.
who = "Lua user"
print(who)
Lua user
문자열은 .. 연산자에 의하여 합칠 수 있습니다.
who = "Lua user"
print("hello "..who)
hello Lua user
.. 연산자 역시 연산에 사용됩니다.
message = "hello " .. who
print(message)
hello Lua user
루아에서는 문자열에 + 연산자를 사용할 수 없습니다.
message = "hello " + who -- 불가능 합니다.
Boolean
boolean 은 true 또는 false 를 값을 가질 수 있습니다. 즉 true 아니면 false 여야 합니다.
b = true
print(b)
true
b = not true
print(b)
false
not 연산자는 true 를 false 로, 반대로 false를 true 로 바꾸는 연산자 입니다.
boolean 은 논리적인 연산 (논리 연산자) 에 의하여 만들어 질 수 있습니다. 즉 논리 연산자의 결과는 boolean 입니다.
print(1==0)
false
print(1==1)
true
Tables
루아는 일반적인 목적의 집합형 데이터를 제공하며 이를 table 이라 합니다. c/c++ 의 struct (구조체) 라 생각하시면 되는데
실제적으로는 이보다 더욱 유연합니다.
집합형 데이터는 흔히 list, set,array,associative array 등에 사용합니다.
루아에서의 테이블은 이렇게 집합형 데이터를 처리할 수 있는 단 하나의 타입 입니다.
테이블의 생성
테이블은 {} 에 의하여 생성할 수 있습니다.
t = {} -- 비어있는 하나의 테이블을 만듭니다.
테이블 자체를 print 하면 그 type 과 주소가 나옵니다.
t = {}
print(t)
table: 01429420
* 참고: table: 뒤의 숫자는 다를 수 있습니다.
테이블은 생성 당시 object 들을 설정하여 생성할 수 있습니다.
t = { value = 123, text = "hello"}
print(t.value)
print(t.text)
123
hello
테이블은 또다른 테이블을 포함할 수 있습니다.
y = { const={ name="Pi", value=3.1415927 }, const2={ name="light speed", value=3e8 } }
print(y.const.name)
print(y.const2.value)
Pi
300000000
Functions
루아에서 함수는 number 또는 string 과 같이 변수에 할당되어 집니다. 함수는 function 이라는 키워드에 의하여 생성 됩니다.
function foo() print("hello") end -- 함수 선언
foo() -- 함수 호출
print(foo)
결과
hello
function: 014308F8
함수의 선언은
function 함수명([인수1,인수2,...])
-- 함수 내부
end
함수의 호출은 함수명에 () 를 붙여 호출 합니다.
함수명([인수1,인수2,...])
함수도 변수입니다. 그러므로 다음이 가능 합니다.
function foo() print("hello") end -- 함수 선언
myfoo = foo
myfoo() -- 함수 호출
결과
hello
nil values
nil 은 참으로 특이한 값 입니다. c/c++ 을 아시는 분들이 혼동하기 쉽습니다. 결론적으로 nil 은 아무것도 아닙니다.
nil 은 c/c++ 의 null 이 아닙니다. c/c++ 의 null 은 0 이죠.. 그러나 루아의 nil 은 0 이 아닙니다. 그냥 nil 입니다.
x = 2.5
print(x)
x = nil
print(x)
결과2.5
nil
nil 은 비교 연산에 사용할 수 있습니다.
print(x == nil)
x = 7
print(x == nil)
print(x)
결과
true
false
7
할당되지 않은 변수는 nil 입니다.
Userdata
userdata 는 기본 루아만으로 사용될수 없습니다. 이는 루아엔진 자체가 다른 어플리케이션에 내제되어(embeded)
C/C++ 과 연동하여 작성될때 사용 됩니다. 추후 설명을 하도록 하겠습니다.
Thread
Thread 역시 추후 설명 도록 하겠습니다.
'Programming > LUA' 카테고리의 다른 글
[루아스크립트/프로그래밍]루아(LUA)Thread 에 대하여 (0) | 2018.05.28 |
---|---|
[루아스크립트/프로그래밍]루아(LUA)루아의 print 함수에 대하여 (0) | 2018.05.22 |
[루아스크립트/프로그래밍]루아(LUA) 연결리스트 (0) | 2018.05.20 |
[루아스크립트/프로그래밍]루아(LUA)Matrix (2차원 배열) 은 ? (0) | 2018.05.20 |
[루아스크립트/프로그래밍]루아(LUA)배열 (Array) (0) | 2018.05.18 |