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";
}



Lua

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++;
}



Lua

while(i < 10) do
	i++
end



12, for文の使い方



PHP

for(i=1, i  > 10,  i++ ){
	echo i."回目";
}



Lua

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;
}



Lua

function sum(x,y)
 	return x+y
end



17, 関数の戻り値の受け取り方

listを使わずに複数の変数をうけとれる。



PHP

function hoge(){
	return array(x, y);
}
list(x, y) = hoge();


Lua

function hoge()
	return x, y
}
x, y = hoge()



18, 無名関数が使える。(PHPでも使えたかな...)



19, Luaの中の関数は全てグローバル変数になる。

関数内だけで使いたい場合には local var みたいなかんじにする。


オブジェクト指向がかなり特殊な感じ...これは後日まとめて記事にしたいと思います。


感想

かなり、Rubyっぽい感じですね。

今回は記事にしていませんが、オブジェクト指向が結構めんどくさそうな気がする。

Cを直接記述することに比べるとやはりかなり楽。

プログラム経験者なら触りながら覚えられる。

あとは、基本関数がどれだけ充実しているかかな...