15分だけLua勉強した

ドットインストールとか見ながら15分だけLua勉強したのでそのメモ。

--コメント
x = 10
s = "hello"
print(x*2) 
> 20

--テーブル(連想配列)操作
t[0] = 0
t[1] = 10
t[2] = 20
t[3] = 30
t[5] = 50

for k,v in pairs(t) do
 print(k, v)
end
>1       10
>2       20
>3       30
>0       0
>5       30

for k,v in ipairs(t) do --ipairsに注意
 print(k, v)
end
>1       10
>2       20
>3       30
--なんでこんなことになるのかよくわからない
--テーブルは1から始まるっぽい
--連番じゃないとそれ以降は捨てるっぽい

print("hello " .. "world") --文字列連結は..

--制御構文
i = 10
if i~= 10 then -- ~= 否定
 print("i not 10")
elseif i == 10 then
 print("i is 10")
else
 print("i is idk")
end

--繰返し
for i=0, 10 --, 増加分指定(オプション
 print(i)--breakをどうはさめばいいのかわからない、エラーになる…
end


--関数
--なんで関数の最後にreturn置いてるにも関わらずendが必要なの…
function func_name(i, j, k)
 return i*j, j*k
end
print(func_name(1,2,3))
>2 6
i, j = func_name(1,2,3)
print(i, j)
>2 6

--可変数引数
function f(i, ...)
 print(i)
 print(...)
end
f(1,2,3)
>1
>2 3

--無名関数
f = function(i)
 print(i)
end
f("hello")
>hello

--コルーチン関数
function func()
    coroutine.yield "1回目の値を返す"
    coroutine.yield "2回目の値を返す"
    return "最終の値を返す"
end

c = coroutine.wrap(func)-- コルーチン関数はwrapしないと動かない
print(c())
print(c())
print(c())
print(c()) -- エラー

感想。
breakどこに置けばいいの…。
end多過ぎ、冗長過ぎ、辛みある。
functionとか長い。とにかく冗長。
複数の値を返せるの良い。可変長引数も使い易い。

あと
i=10
i==10
ってやったらTrue返して欲しいなぁとか細々と意に沿わない。
15分勉強した感じだとPythonでええやんという感じになってる。
15分で言語語るなって言われたら全くその通りなんだけど、
rubyとかFactorとかだと15分でも一目惚れ出来た気がするが、
Luaはサンプル実行してるだけで「冗長だなぁ」感が押し寄せてきて残念ながら一目惚れ出来なかった。
ドットインストールで学べる程度の範囲で一目惚れ出来ると嬉しいな。
次はSmalltalkやりたい。