Luaとはゲームや組込み分野で使われるスクリプト言語です。スクリプトにしては実行速度が高速なのが特徴です。この記事では、Luaの使い方や書き方を入門者向けにサンプルを交えてご紹介します
Luaの公式サイト(The Programming Language Lua)からLuaをダウンロードしてインストールする。
Lua は主要な Gnu/Linux ディストリビューションの公式リポジトリで入手可能なため、パッケージマネージャーを使用して Lua をインストールできる。
Debian、Ubuntu 又は Linux Mint に Lua をインストールする例を以下に示す。
$ lua
Command 'lua' not found, but can be installed with:
sudo apt install lua5.1 # version 5.1.5-8.1build4, or
sudo apt install lua5.2 # version 5.2.4-1.1build3
sudo apt install lua5.3 # version 5.3.3-1.1ubuntu2
sudo apt install lua50 # version 5.0.3-8build1
sudo apt install tarantool # version 1.9.1.26.g63eb81e3c-1.1build3
$ sudo apt install lua5.3
Lua言語で文字列を連結するには、文字列連結演算子(..)を使う。
s = "foo".."bar"
for 変数 = 初期値, 終了値, 増加量
-- 繰り返し処理
end
増加量は省略できる。増加量を省略した場合、増加量は1となる。
for 変数 = 初期値, 終了値
-- 繰り返し処理
end
Lua言語において、条件が真の場合にだけ実行する処理を書くには、if
文を使う。
if 式1 then
-- 条件が真の場合の処理
end
条件が真の場合と偽の場合とで処理を分岐させるときには、else
文を使う。
if 式1 then
-- 条件が真の場合の処理
else
-- 条件が偽の場合の処理
end
条件が偽の場合に、さらに別の条件判定を行うには、elseif
文を使う。
if 式1 then
-- 処理1
elseif 式2 then
-- 処理2
else
-- 処理3
end
Lua言語において繰返し処理を後判定で行うには、repeat
文を使う。
繰返しの判定は処理ブロックの後ろで行うため、少なくとも1回は処理を実行する。
repeat
-- block
until expr
Lua言語において繰返し処理を前判定で行うには、while
文を使う。
繰返しの判定は処理ブロックの前で行うため、1回も処理を実行しないことがある。
while expr do
-- block
end
--
から行末まではコメントとなる。
-- single line comment
--[[
から ]]
まではコメントとなる。途中に改行が入ってもよい。
--[[
multi
line
comment
]]
Luaスクリプト実行時の引数を参照するには、変数 arg
を参照する。
引数の個数は table.getn(arg)
で取得することができる。
Lua言語において、関数は次のように定義する。
function f ()
-- body
end
関数に引数を指定することもできる。
function f (a, b)
-- body
end
print関数は、引数に指定した値を tostring
で文字列に変換してから標準出力に出力する。
print(arg1[, arg2...])
string.format(format, 値...)
format にはC言語のprintfと同じフォーマットを指定する。
指定したモードでファイルを開く。成功した場合、新しいファイルハンドルを返す。失敗した場合、nil
とエラーメッセージを返す。
io.open(filename)
ファイルを指定したモードでオープンする。
io.open(filename, mode)
引数 mode には次のモードのうちいずれかを指定する。
モード | 説明 |
---|---|
"r" |
読み込みモード(デフォルト) |
"w" |
書き込みモード |
"a" |
追加モード |
"r+" |
更新モード(以前のデータは消えない) |
"w+" |
更新モード(以前のデータはすべて消える) |
"a+" |
追加更新モード(以前のデータは消えない) |
引数に指定した値をファイルに書き込む。
f:write(arg1[, arg2...])
ファイルを閉じる。
f:close
プログラムが使用するCPU時間の概算値 (秒単位) を返す。これは、基本となるISO C関数クロックから返される。
os.clock()
指定された文字列書式に従って書式設定された、日付と時刻を含む文字列またはテーブルを返す。
現在の日付と時刻を返す。
os.date()
現在の日付と時刻を指定した書式設定で返す。
os.date(format)
指定した日付と時刻を指定した書式設定で返す。
os.date(format, time)
Luaは標準のsleep/wait/pause関数を提供していない。
Linuxの場合、次に示す方法でsleepを実現できる。
os.execute("sleep 60")
Luaスクリプトの実行を終了する。LuaスクリプトからOSに返す終了コードを引数で指定することができる。
os.exit([code])
Pontifícia Universidade Católica do Rio de Janeiro 2023. The Programming Language Lua