Lua 基本構文

Lua はとても簡単に学べます。最初の Lua プログラムを作成しましょう!

Lua コードファイルの拡張子は.lua。


最初の Lua プログラム

対話型プログラミング

Lua には対話型プログラミングモードがあります。コマンドラインにプログラムを入力すると、すぐに結果を確認できます。

Lua の対話型プログラミングモードは、コマンド lua -i または lua で有効にできます:

$ lua -i 
$ Lua 5.3.0  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> 

コマンドラインで、次のコマンドを入力します:

> print("Hello World!")

続いて Enter キーを押すと、出力結果は次のようになります:

> print("Hello World!")
Hello World!
>

スクリプト型プログラミング

Lua プログラムコードを lua で終わるファイルに保存して実行できます。このモードをスクリプト型プログラミングと呼びます。たとえば、次のコードを hello.lua というスクリプトファイルに保存します:

print("Hello World!")
print("www.example.com")

lua というコマンドで上記のスクリプトを実行すると、出力結果は次のようになります:

$ lua hello.lua
Hello World!
www.example.com

スクリプトを実行するために、コードを次の形式に変更することもできます(先頭に #!/usr/local/bin/lua を追加):

例

#!/usr/local/bin/lua

print("Hello World!")
print("www.example.com")

上記のコードでは、Lua インタープリタを /usr/local/bin ディレクトリに指定しています。#マークを付けると、インタープリタはそれを無視します。次に、スクリプトに実行権限を追加して実行します:

./hello.lua 
Hello World!
www.example.com

コメント

単行コメント

単行コメントは2つのハイフンで--始まり、その後に続く内容はインタープリタによって無視されます。

--

単行コメントは通常、コードの簡単な説明やマーキングに使用されます。

複数行コメント

複数行コメントは--[[で始まり、]]で終わります。大きなコードブロックを説明する必要がある場合に適しています。

--[[
 複数行コメント
 複数行コメント
 --]]

Lua はネストしたコメントをサポートしていません。つまり、複数行コメント内に別の複数行コメントをネストすることはできません。たとえば、次のコードは無効です:

--[[
これは複数行コメントです
--[[
入れ子になった複数行コメント(これは非合法です)
]]
]]

識別子

Lua の識別子は、変数、関数、その他のユーザー定義項目を定義するために使用されます。識別子はアルファベット A から Z または a から z またはアンダースコアで_始まり、その後に0個以上の文字、アンダースコア、数字(0 から 9)を続けることができます。

アンダースコアと大文字を組み合わせた識別子は使用しないことをお勧めします。Lua の予約語も同様の形式だからです。

Lua では次のような特殊文字を使用できません:@, $、および%を識別子の定義に使うことはできません。Lua は大文字と小文字を区別するプログラミング言語です。したがって、Lua では Python と Python は異なる識別子です。

以下に正しい識別子の例をいくつか示します:

mohd         zara      abc     move_name    a_123
myname50     _temp     j       a23b9        retVal

キーワード

以下に Lua の予約キーワードを示します。予約キーワードは、定数、変数、またはその他のユーザー定義の識別子として使用できません:

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

一般的な取り決めとして、アンダースコアで始まり大文字の連続が続く名前(例:_VERSION)は、Lua 内部のグローバル変数用に予約されています。


グローバル変数

デフォルトでは、変数は常にグローバルと見なされます。

グローバル変数は宣言を必要としません。変数に値を代入すると、そのグローバル変数が作成されます。初期化されていないグローバル変数にアクセスしてもエラーにはならず、結果として nil が返るだけです。

> print(b)
nil
> b=10
> print(b)
10
>

グローバル変数を削除したい場合は、変数に nil を代入するだけで済みます。

b = nil
print(b)      --> nil

これで変数 b は、一度も使用されなかったかのようになります。言い換えれば、変数が nil でない場合に限り、その変数は存在することになります。

その他の拡張