niszetの日記

細かい情報を載せていくブログ

Programming in Lua Forth editionを購入した

Luaはいろんなところに使われているんだな。

ということで、重い腰を上げてLuaを勉強しようと思う。あまりLuaについての書籍は発行されておらず、特に和書はない。少し前のであればあるのだが、まぁ新しいものが良かろうということで(といってもこれも数年前のだが)Programming in Lua Forth editionを購入したのである。

少し余裕が出てきたので、1章だけさっと読んだところまでまとめ。なおこれはただの備忘録。

IDE

とりあえず気軽に試せるLuaの実行環境が欲しかったので、ZeroBrane StudioのIDEをインストールした。Windowsは32bit版しかないのか(といってもLuaで必要?ってのはあるのかな)

studio.zerobrane.com

MatlabとかRStudioみたいな、コンソールとソースのPangeとかがあるような普通?のIDEですね。特に手間取ることはなかった。

予約語

Luaにも予約語がある。本によれば

and break do else elseif end false for function goto if in local nil not or repeat return then true until while

とある。ただし、変数名は大文字小文字を区別するので、andは予約語だがAndやANDは予約語ではなく別の変数として扱われる。

インタプリタ上で実行時の挙動

Lua 5.3からは

a = 15 
a + 2 --> 17

という普通の書き方が出来る。Lua5.2以前は

a = 15 
= a + 2

のようにしないとダメだったみたいなことが書いてあるが、上記のIDE上ではそんなことなかった…。

関数は

function 関数名 (引数, 引数2)
  処理
end

という形になるようだ(まだ記述例が出ただけなので詳細は不明)

変数に使用できる文字とか

数字ではじまらない、任意の文字 ^[実際に試してみると日本語の変数名でも動いているのだが、多分避けた方が良いと思う] と数字とアンダースコア()を使うことが出来る。ただし、ではじまり、1文字以上の大文字が続くような変数名は避けた方が良い。Luaの中で特別な用途で使用されているようだ。たとえば、_VERSIONはLuaのバージョンを返している。これを使うと先のIDEでは5.1が使われているようなのだが、インタプリタの挙動は5.3のもののように見える…もう少し調べてみる。現時点ではわからない。

コメント

コメントは--以降がコメント。なので、先のコードの-->はコメントになるのでコードをそのままコピーして実行できる。

ブロックコメントは

--[[
コメント内なので実行されない
--]]

の形で書く。ここで、--[[---[[-を一つ足すとブロックコメントにならないので、コメントアウトが外れる(それぞれ別のコメントになる)とのこと。

変数

Luaの変数には未定義がない。ないものはnilとなる。また、変数にnilを与えることでその変数は未定義と同じ、nilを返すようになるのでそれらの差異はないようにふるまう

type()で調べられるようだ。また、type()の戻り値は文字列なので、`type(type(何か))‘は何かが何であってもcharacterを返す。

真偽値

nilとfalse以外はすべてtrueとなる。notで否定。

andとorが特殊で、

1 and 2 --> 2
nil and 10 --> nil
false and 10 --> false
3 or 4 --> 3
nil or 9 --> 9
false or 9 --> 9

のようになる。これは慣れるまで不思議に思いそう。andとorとしては確かにそうねという感じだが、真偽値を返すわけではないというところがミソか。

Cの3項演算子のような A ? B : C は (A and B) or C あるいは A and B or C と書く。()を外してよいのはandの方がorよりも演算の優先度が高いため。

セミコロン

邪悪な行末セミコロンは不要。ただしあっても挙動に差異がなく、1行に複数の行をまとめてしまいたいときは見やすさのために入れておくと良さそうである。

とりあえずここまで。