3. す、素直な文法!? -- 階乗を計算してみる -- function fact(a) if a > 1 then return a*fact(a-1) else return 1 end end for i=1,10 do print( i .. "! =" .. fact(i) ) end fact=function(a) ; end というのも ok 何の変哲もない if 文 普通の カウンタループ 文字列連結はツードット ぱっと見、特徴が 無いのが特徴!? ⇒ 誤解・ PitFall が 少ない文法
4. 何でも入るテーブル ( 連想配列 ) function Foo(a,b) local result= { a , -- same as "[1]=a" b , -- same as "[2]=b" ["a"] = a , b = b, putA = function(self) print(self["a"]) end , putB = function(self) print(self.b) end } return result end foo = Foo(100,200) foo.putA(foo) foo:putA() テーブルに 無名関数をぶちこめば、 そのままメソッド メソッド付きのテーブルを返せば、即ちコンストラクタなのさ ( この辺流儀は様々 ) コロンがメソッド コール演算子 さりげなく local 宣言 デフォルトはグローバル 中括弧 ( テーブル ) だけで、 ・配列 ・連想配列 ・オブジェクト ・モジュール用名前空間 を全て兼ねる ⇒ 文法少ない ⇒ 覚えやすい