しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Lua 概要

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

複数条件を書くときは&&と||でなくandorを使います。

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)

その他の細かい特徴

  • セミコロン不要
  • コメントは--で書く
  • 複数行のコメントは--[[]]