Luaの勉強:1
ありがたいことに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とかでブロックをつくるのだ。