PHPerがLuaを触ってみて、厄介だと思った箇所 - 基本編
こんにちわ!あの花と仁でボロ泣きして頭痛が痛い。
自称24歳私でちゅ。
今日は、Luaを触ってみたので感想を書いてみました。
Luaとは?
プログラムに組み込むスクリプト言語
小さく、シンプル
C言語だけあれば動作する。
Ruby, Pythonよりは高速に動作する。
主にゲーム開発などに用いられることが多い。
ソニックやアイドルマスターなどもLuaで開発されている。
Lua公式ドキュメント
http://www.lua.org/
LuaWiki
http://lua.mine.nu/w/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
Luaプログラミング入門
http://karetta.jp/book-cover/lua
プログラミング言語Luaの紹介
http://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
高速スクリプト言語「Lua」を始めよう!
http://www.hakkaku.net/articles/20081023-283
インストール方法
Mac
macportで余裕でした。
$ sudo port install lua
※依存関係があるとうまくいかないことがある。
ソースからインストール
http://dgames.jp/dan/permalink/20100228
Windows
m9(^Д^)プギャー
PHPerがLuaを触ってみて、厄介だと思った箇所 - 基本編
1, 基本関数の使い方はJSやAS3っぽい。
2, 末尾に;(セミコロン)がいらない。
3, コメントは // じゃなくて -- 複数行コメント --
4, 文字連結が .. (ドット2つ)
5, NULLがnil
6, if文の使い方がRubyっぽい。
PHP
if (result >= 60) { echo "test1"; }elseif(result >= 50){ echo "test2" }else{ echo "test3"; }
if (result >= 60) then print("test1") elseif (result >= 50) then print("test2") else print("test3") end
7, 0は偽条件ではない
hoge = 0 if ( hoge ) then print("second") end
=> second
8, != ではなく ~=
9, xがyと等しくなければ真,そうでなかったら偽
hoge = 1 if( hoge ~= 1 ) then print("Hello") else print("World") end
=> World
10, &&, ||, ! ではなく and, or, not
11, while文の使い方
doを付けなければならない。
PHP
while(i < 10){ i++; }
while(i < 10) do i++ end
12, for文の使い方
PHP
for(i=1, i > 10, i++ ){ echo i."回目"; }
for i=1, 10, 1 do print(i.."回目") end
13, breakがendの手前でしか使えない。
for i = 0, 10 do print("test1") -- ここでbreakしたい。 print("test2") end
=> test1 test2
for i = 0, 10 do print("test1") -- このように対応 do break; end print("test2") end
=> test1
14, switch文がない。
15, foreach文がない。
16, 関数の作り方
PHP
function sum(x, y){ return x+y; }
function sum(x,y) return x+y end
17, 関数の戻り値の受け取り方
listを使わずに複数の変数をうけとれる。
PHP
function hoge(){ return array(x, y); } list(x, y) = hoge();
function hoge() return x, y } x, y = hoge()
18, 無名関数が使える。(PHPでも使えたかな...)
19, Luaの中の関数は全てグローバル変数になる。
関数内だけで使いたい場合には local var みたいなかんじにする。
オブジェクト指向がかなり特殊な感じ...これは後日まとめて記事にしたいと思います。
感想
かなり、Rubyっぽい感じですね。
今回は記事にしていませんが、オブジェクト指向が結構めんどくさそうな気がする。
Cを直接記述することに比べるとやはりかなり楽。
プログラム経験者なら触りながら覚えられる。
あとは、基本関数がどれだけ充実しているかかな...