반응형

루아에서 사용하는 8가지의 type 에 대해서 알아 보겠습니다.

  1. number
  2. string
  3. boolean
  4. table
  5. function
  6. nil
  7. userdata
  8. 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 역시 추후 설명 도록 하겠습니다.

 


+ Recent posts