Lua勉強日記(3)
2008/05/23
制御構造について知るために、簡易ユーザ認証風な関数を書いてみました。
syntax.lua
users = { { name = "john", password = "xxxxx"}, { name = "paul", password = "yyyyy"} } function certify(name, password) for i, user in ipairs(users) do if user.name == name then if user["password"] == password then return true else return false end end end end if certify("john", "xxxxx") then print("johnは認証された。") else print("johnは認証されなかった。") end if certify("paul", "yyxxzz") then print("paulは認証された。") else print("paulは認証されなかった。") end
実行結果
C:\lua_example>lua5.1.exe syntax.lua johnは認証された。 paulは認証されなかった。
usersというテーブルに、ユーザデータを定義しました。
certifyという関数で、引数の名前とパスワードで認証判定します。認証が成功した場合は true を返し、認証が失敗した場合は false を返します。
for は、ipairs 関数を使って、テーブル内部のデータを舐めてます。
Luaには、switch文は無いようです。(perl にも無かったし、特に困らない)
for以外の繰り返しは以下があります。
- while 条件 do … end
- repeat … until 条件
ループを抜けるためのbreak文がありますが、continue文はありません。だから、ループ内でcontinueを使いたい場合には、if文で囲む必要があります。
これは、インデントが深くなってしまうので嬉しくない。あまり広い(行数の多い)ループは書くな!という方針でFAかな。