Lua

Luaとはゲームや組込み分野で使われるスクリプト言語です。スクリプトにしては実行速度が高速なのが特徴です。この記事では、Luaの使い方や書き方を入門者向けにサンプルを交えてご紹介します

インストール

Luaの公式サイト(The Programming Language Lua)からLuaをダウンロードしてインストールする。

Linux に 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

for 変数 = 初期値, 終了値, 増加量
  -- 繰り返し処理
end

増加量は省略できる。増加量を省略した場合、増加量は1となる。

for 変数 = 初期値, 終了値
  -- 繰り返し処理
end

if

Lua言語において、条件が真の場合にだけ実行する処理を書くには、if 文を使う。

if 式1 then
  -- 条件が真の場合の処理
end

条件が真の場合と偽の場合とで処理を分岐させるときには、else 文を使う。

if 式1 then
  -- 条件が真の場合の処理
else
  -- 条件が偽の場合の処理
end

条件が偽の場合に、さらに別の条件判定を行うには、elseif 文を使う。

if 式1 then
  -- 処理1
elseif 式2 then
  -- 処理2
else
  -- 処理3
end

repeat

Lua言語において繰返し処理を後判定で行うには、repeat 文を使う。

繰返しの判定は処理ブロックの後ろで行うため、少なくとも1回は処理を実行する。

repeat
 -- block
until expr

while

Lua言語において繰返し処理を前判定で行うには、while 文を使う。

繰返しの判定は処理ブロックの前で行うため、1回も処理を実行しないことがある。

while expr do
  -- block
end

-- comment

-- から行末まではコメントとなる。

-- single line comment

--[[ comment ]]

--[[ から ]] まではコメントとなる。途中に改行が入ってもよい。

--[[
  multi
  line
  comment
]]

arg

Luaスクリプト実行時の引数を参照するには、変数 arg を参照する。

引数の個数は table.getn(arg) で取得することができる。

function

Lua言語において、関数は次のように定義する。

function f ()
  -- body
end

関数に引数を指定することもできる。

function f (a, b)
  -- body
end

print

print関数は、引数に指定した値を tostring で文字列に変換してから標準出力に出力する。

print(arg1[, arg2...])

string.format

string.format(format, 値...)

format にはC言語のprintfと同じフォーマットを指定する。

io.open

指定したモードでファイルを開く。成功した場合、新しいファイルハンドルを返す。失敗した場合、nil とエラーメッセージを返す。

io.open(filename)

ファイルを指定したモードでオープンする。

io.open(filename, mode)

引数 mode には次のモードのうちいずれかを指定する。

io.openのモード
モード 説明
"r" 読み込みモード(デフォルト)
"w" 書き込みモード
"a" 追加モード
"r+" 更新モード(以前のデータは消えない)
"w+" 更新モード(以前のデータはすべて消える)
"a+" 追加更新モード(以前のデータは消えない)

f:write

引数に指定した値をファイルに書き込む。

f:write(arg1[, arg2...])

f:close

ファイルを閉じる。

f:close

os.clock()

プログラムが使用するCPU時間の概算値 (秒単位) を返す。これは、基本となるISO C関数クロックから返される。

os.clock()

os.date()

指定された文字列書式に従って書式設定された、日付と時刻を含む文字列またはテーブルを返す。

現在の日付と時刻を返す。

os.date()

現在の日付と時刻を指定した書式設定で返す。

os.date(format)

指定した日付と時刻を指定した書式設定で返す。

os.date(format, time)

os.execute()

Luaは標準のsleep/wait/pause関数を提供していない。

Linuxの場合、次に示す方法でsleepを実現できる。

os.execute("sleep 60")

os.exit()

Luaスクリプトの実行を終了する。LuaスクリプトからOSに返す終了コードを引数で指定することができる。

os.exit([code])
code
LuaスクリプトからOSに返す終了ステータス。省略した場合は1。

参考文献

Pontifícia Universidade Católica do Rio de Janeiro 2023. The Programming Language Lua