CORONA SDK TUTORIAL :: LUA SCRIPT
코로나는 프로그래밍을 위해 Lua라는 스크립트 언어를 사용합니다.
Lua는 주로 게임 분야에서 많이 사용되는 언어인데 코로나의 가장 강력한 장점인 게임 개발과 연계하여 생각했을 때 당연한 선택이었겠죠. 비단 게임뿐만 아니라 Lua 자체만으로 봤을 때도 상당히 쉬운 문법 구조와 높은 생산성을 지닌 언어이기에 코로나팀은 주저없이 Lua를 ‘코로나의 프로그래밍 언어’로 선택했을 것입니다.
최근 가장 각광받는 스크립트 언어인 JavaScript와 알게 모르게 비슷한 부분이 많아 JavaScript(또는 ActionScript)에 익숙한 프로그래머라면 어렵지 않게 배울 수 있을 것입니다.
자, 그럼 Lua 언어의 기본적인 특징들을 살펴보죠.
1. Lua는 대소문자를 구분합니다. 즉, version과 Version은 다른 것으로 구분됩니다.
2. 명령줄 끝에 ;를 붙여도 되고 안붙여도 됩니다. 일반적으로는 붙이지 않습니다.
print(9) -- 가능
print(9); -- 가능
3. 한줄 주석은 — 를 이용하고 다중 라인 주석은 –[[와 ]]를 이용합니다.
한줄 주석
--print("주석 테스트")
다중 라인 주석
--[[
print("주석 테스트")
]]
4. 변수 타입을 선언하지 않아도 됩니다. 또한, 타입이 동적으로 변환됩니다.
local boo = 3
boo = {5, "string", 0.6}
print (boo[2]) -- string (테이블은 1 부터 인덱싱됩니다)
5. 변수는 local과 global로 나뉩니다. 변수앞에 local 키워드를 붙이면 local 변수고, 아무것도 안붙이면 global 변수가 됩니다.
function getNum()
n = 10 -- global
return n
end
print(getNum())
print(n)
6. 배열은 table이며 1부터 인덱싱이 됩니다. 또한, 이름으로 인덱싱할 수도 있습니다.
local tbl = {first=10, 20, second=30, 40} -- 이름으로 인덱싱할 경우 기본 숫자 인덱싱에서는 제외됩니다.
print(tbl[1]) -- 20
print(tbl[2]) -- 40
print(tbl["first"]) -- 10
print(tbl.second) -- 30
-- 다차원 배열 예
local arr = {}
arr[1] = {1, 2, 3}
print(arr[1][2]) -- 2
7. 연산자
+, -, *, /, %, ^ 등 수식 연산자는 JavaScript/ActionScript와 동일합니다.
관계연산자에서 다른 부분이 하나 있는데, != 대신 ~=를 사용합니다. (==, ~=, <, , ]]><=, >=)
논리 연산자는 and, or, not을 사용합니다.
문자열의 연결은 ..을 이용합니다. PHP의 경우는 . 하나를 이용하는데 Lua는 두개입니다.
또한 배열이나 문자열의 길이를 구할 때 보통은 length를 이용하는데 Lua는 #을 이용합니다. (num.length => #num)
<연산자 우선순위 (높은순)>
^
not # – (부호인 단항연산자)
* / %
+ –
..
> < >= <= ~= == and or <도트 연산자>
JavaScript/ActionScript의 경우는 프로퍼티와 메소드에 접근할 때 . 연산자를 이용합니다. Lua의 경우 프로퍼티는 . 로 접근하지만 메소드는 : 을 이용합니다.
JavaScript
object.translate( 10, 10 );
Lua
object:translate( 10, 10 )
8. 메모리 관리는 Java, C#, ActionScript가 그러하듯 Lua도 가비지 컬렉터가 자동으로 알아서 해줍니다. 따라서, 초급 개발자도 쉽게 개발이 가능합니다.
9. 변수에 다중 할당이 가능합니다. 변수값 스와핑에 유용하겠네요.
local x = 3
local y = 5
print(x, y) -- 3 5
x,y = y, x
print(x, y) -- 5 3
10. Lua의 함수는 여러개의 값을 리턴 할 수 있습니다. 위 9번에서 살펴본 것처럼 변수에 다중 할당해서 사용할 수 있습니다.
function getParams()
return 3, 5
end
local a, b = getParams()
print(b); -- 5
Lua언어의 기본적인 특징을 살펴봤습니다. 기존에 다른 언어를 하셨던 분들은 힘들이지 않고 쉽게 적응하실 것입니다.