본 문서는 Lua Tutorial 의 일부를 발췌하여 간단하게 lua 문법과 활용 예제를 정리하고 있습니다.
LuaTypesTutorial
문자열을 연결하기 위한 연산자로 .. 를 사용합니다. + 연산자는 사용할 수 없습니다.
> who = "Lua user"
> message = "hello " .. who
> print(message)
hello Lua user
.. 연산자는 문자열과 숫자의 결합에도 사용할 수 있습니다. 결과는 문자열 입니다.
> = "Green bottles: "..10
Green bottles: 10
> = type("Green bottles: "..10)
string
AssignmentTutorial
여러 변수를 동시에 할당하고 싶은 경우 다음과 같은 방식으로 할당할 수 있습니다.
> x, y = 2, "there"
> print(x, y)
2 there
할당 과정 중에 앞의 변수를 사용할 수 있습니다. 다만, 앞의 변수가 변하기 전의 값을 사용하게 되니 주의하시기 바랍니다.
> i = 7
> i, x = i + 1, i
> print(i, x)
8 7
이런 특성을 이용하여 다음과 같이 swap 을 구현할 수 있습니다.
> a, b = 1, 2
> print(a, b)
1 2
> a, b = b, a
> print(a, b)
2 1
> a, b = b, a
> print(a, b)
1 2
같은 변수를 여러번 할당 하는 경우, 현재 버전에서는 앞의 할당만 인정합니다.
> a, a = 1, 2
> print(a)
1
변수의 갯수보다 더 많이 할당하는 경우, 뒤의 할당을 무시합니다. 반대로 변수보다 할당이 적은 경우 할당되지 못한 변수는 nil 이 됩니다.
> a, b, c = 1, 2, 3, 4, 5, 6
> print(a, b, c)
1 2 3
> a, b, c, d = 1, 2
> print(a, b, c, d)
1 2 nil nil
NumbersTotorial
StringsTotorial
문자열은 다음과 같이 3가지로 표기가 가능합니다.
> = "hello"
hello
> = 'hello'
hello
> = [[hello]]
hello
문자열 기호를 표기하고 싶다면 문자열 기호를 적절하게 중첩하여 사용하면 됩니다.
> = 'hello "Lua user"'
hello "Lua user"
> = "Its [[content]] hasn't got a substring."
Its [[content]] hasn't got a substring.
> = [[Let's have more "strings" please.]]
Let's have more "strings" please.
물론 다른 언어와 마찬가지로 escape sequence 를 사용하여 표기할 수도 있습니다.
> = "hello \"Lua user\""
hello "Lua user"
> = 'hello\nNew line\tTab'
hello
New line Tab
[[ 기호를 사용하는 경우 escape sequence 를 무시할 수 있습니다.
> = [[hello\nNew line\tTab]]
hello\nNew line\tTab
[[ 기호를 사용하면 여러줄의 문자열을 쉽게 표현할 수도 있습니다.
> = [[Multiple lines of text
>> can be enclosed in double square
>> brackets.]]
Multiple lines of text
can be enclosed in double square
brackets.
[[ 기호를 중첩으로 사용하는 경우 = 기호를 추가하여 사용합니다.
> = [[one [[two]] one]] -- bad
stdin:1: nesting of [[...]] is deprecated near '['
> = [=[one [[two]] one]=] -- ok
one [[two]] one
> = [===[one [[two]] one]===] -- ok too
one [[two]] one
> = [=[one [ [==[ one]=] -- ok. nothing special about the inner content.
one [ [==[ one
TablesTutorial
Table 의 인덱스는 C 스타일의 언어와 달리 1에서 부터 시작(C 의 경우 0에서 부터 시작하지요)합니다.
for 문을 통해 접근할 경우 ipairs(t) 혹은 pairs(t) 를 사용할 수 있습니다. 앞의 경우 숫자 인덱스만으로 접근하는 형태이고 후자의 경우 사용자가 정의한 인덱스까지 접근할 수 있습니다.
Lua 의 table 은 기본적으로 1에서 부터 시작하는 인덱스를 가지지만 사용자가 인덱스를 임의로 줄 수 있습니다.
> t = { 2,4,6, language="Lua", version="5.1" }
> for k,v in pairs(t) do print(k,v) end
1 2
version 5.1
3 6
language Lua
2 4
> for i,v in ipairs(t) do print(i,v) end
1 2
2 4
3 6
ExpressionsTutorial
FunctionTutorial



덧글