Cocos2dの勉強でLuaを触り始めたので概要をまとめてみました。
特徴
- スクリプト言語
- 軽量で高速
文字列
文字列は""
か''
で表します。
文字列連結は下のように..
で実現できます。
"hello".."world"
テーブル型
Luaには配列や連想配列がなく、代わりにテーブル型というものがあります。
テーブルの宣言と取り出し方は下の通りです。
注意点ですが、テーブルの1番目の要素を取得したい場合はa[1]
とします。
a = {10, 20, 30} print(a[1]) -- → 10
要素数は#a
で取得します。
a = {10, 20, 30} print(#a) -- → 3
文字列と数値の混在もできます。
a = {10, 20, 30, "あ"} print(a[4]) -- → "あ"
連想配列は下のように書けます。
a.b
という形でも取り出せます、Javascriptに似た構文ですね。
a = {a = 10, b = 20, c = 30} print(a["a"]) -- → 10 print(a.b) -- → 10
配列と連想配列の混ざったようなものも作れます。
a = {1, 2, a = 10, b = 20, c = 30, 3} print(a["a"]) -- → 10 print(a[1]) -- → 1 print(a[3]) -- → 3
Luaのif文
if文は下のように書けます。
a = 1 if a == 2 then print(2) elseif a == 1 then print(1) else print("other") end
否定は!=
でなく~=
を使います。
少し特徴的ですね。
if 1 ~= 2 then print("a != 2") end
複数条件を書くときは&&と||でなくand
とor
を使います。
if 1 == 1 and 2 == 1 then end
Luaのfor文
for文は下のように書きます。
for i = 0, 10 do print(i) end
breakもあります。しかしcontinue文はないようです。
for i = 0, 10 do print(i) if i == 2 then break end end
配列のfor in
は下のようになります。
a = {10, 20, 30} for i, value in ipairs(a) do print(i) print(value) end
連想配列のfor in
は下の通りです。
順番はランダムなので注意が必要です。
a = {a = 1, b = 2, c = 3} for i, value in pairs(a) do print(i) print(value) end
Luaの関数
Luaの関数は下のように書きます。
function a() return "A" end print(a()) -- → A
引数も使えますが、呼び出す際は省略する事も可能です。
function a(t) return t end print(a()) -- → nil
可変長引数は...
と書きます。
function a(...) print(...) -- → 1 2 3 end a(1, 2, 3)
その他の細かい特徴
- セミコロン不要
- コメントは
--
で書く - 複数行のコメントは
--[[
と]]