ありがたいことにLuaリファレンスマニュアルの日本語訳がありましたので、Lightroom SDKからはなれてLua自体をざっと勉強してみます。

ものすごい基本的な要素から。

テーブル

{}ってなんだ? と、Lightroom SDKのガイドをみていておもったのですが、これはテーブルというデータ構造でした。

テーブルというのは連想配列です。関数もファーストクラスオブジェクトなので、テーブルには値として関数も格納できる。この場合、この関数は「メソッド」と呼ぶ、のかな?

table.nameって記法は、table["name"]と同じ意味のシンタックス・シュガー。

変数

変数は型をもたない。グローバルかローカル。ローカル変数はレキシカルスコープを持つ。明示的にlocalと宣言しなければ変数はグローバル。

グローバル変数は、「環境」テーブルに定義されている。グローバル変数xへの参照は、_envを環境テーブルとするならば、_env.xと同じ。

実行の単位はチャンクとよび、文のあつまり。チャンクは、可変長引数の無名関数の本体と同じ。文の集まりは、ブロックでもある(構文的には同じだが、意味が違う)。do - endで囲むと単一の文もブロックになる。

多重代入

ができます。x,y = y, xで値の交換ができたり。

制御構造

けっこう普通だけど、breakやreturnはブロックの最後で使わなくてはならない、ってのが面白い。どうしても途中でbreakしたかったら、do break endとかでブロックをつくるのだ。