関数呼び出し

premakeとか「スクリプト言語による効率的ゲーム開発」のクラス作成で出てくる構文

files { "**.h" }

class("Point"){
  count=0
}

がどうもよく分からなかったのだがリファレンス見てたら書いてあった。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.5.8


関数呼び出しは、

	args ::= `(´ [explist1] `)´
	args ::= tableconstructor
	args ::= String

がありなので

hoge("arg")
hoge { huga="arg" }
hoge "arg"

などが文法的に合法となる。
関数オブジェクトを返す関数を利用することでかなりフリーダムな記述が可能になる。
rubyのように常に括弧が省略可能なわけではなく、引数がテーブルか文字列リテラルの場合にのみ省略が可能。

function hoge(huga)
  return function(arg)
    -- ここは括弧が必要
    print(huga)
  end
end

-- こんなのとか文法的にOK
hoge { huga="arg" } { fuga="arg" }

とりあえずluaの文法はだいたいわかったような気がする。