"Overview of Differences & Highlights" - (MoonScript, a language that compiles to Lua) より
シンタックスのより詳しい要約はreference manualにある。
- ブロックは空白に影響を受けやすく、インデントによって定義される
- 全ての変数はデフォルトでローカルである
- グローバル変数を宣言するためにキーワードをエクスポートする、テーブルから値をローカルにコピーするためにキーワードをインポートする
- 関数呼び出しの丸括弧は rubyのように書かなくてもよい
- 太い矢印
=>は、self引数付きの関数を定義できる @を名前に前置することで、selfが持つ属性を参照できる!演算子は無引数の関数呼び出しに使用出来る- 最後の文の型によって、関数戻り値が暗黙的に返される
:はテーブルリテラル=の代わりに、キーと値を区別するために使われる,に加えて、改行もテーブルリテラル項目の区切りとして使われる\は:の代わりにオブジェクトのメソッドを呼び出すときに使われる+=、-=、/=、*=、%=演算子!=は~=のエイリアスである- テーブルは簡易なスライスとイテレータのシンタックスを理解する
- 行は、行末のforループとif文で修飾できる
- if文は式として使える
- 継承可能なクラスシステはメタテーブルの
__index属性を基礎におく - コンストラクタ引数を
@で始める事で、自動的にオブジェクトへ割り当てる - クラスメソッドにおいて、同名の親クラスのメソッドにマップするMagic super function
with分は短い文法で無名オブジェクトにアクセスできる