Lua Tutorial 1, Introductory topics by 신동호

참조 문서: http://lua-users.org/wiki/TutorialDirectory

본 문서는 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


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://aronze.egloos.com/tb/1415993 [도움말]

덧글

덧글 입력 영역