Luaの基本文法

はじめに

Luaは強力で高速、軽量に動作する組み込み可能なスクリプト言語です。
今回はLuaの基本文法について記述していきます。

コメントアウト

一行コメントアウト

Luaコメントアウトを行うにはハイフンを並べて使用します。

-- comment

また、文頭に#を使用してもコメントアウトを行うことが可能ですが、その場合は行頭に配置しないと使えない為注意が必要です。

複数行コメントアウト

複数行のコメントアウトを行う場合はハイフンの直後に開き長括弧()を使用します。
この場合、コメントアウトは対応する閉じ長括弧(
)がある部分まで続きます。

--[[
	comment
]]

複数行コメントアウトで処理を実行されないようにする場合は、閉じ括弧の直前にもハイフンを二つおく事をお勧めします。

--[[
	(処理部分)
--]]

この記法はデバッグの際に大変役立ちます。
処理部分のコメントアウトを外したいときに、開き括弧の前にもうひとつハイフンを加えると

---[[
	(処理部分)
--]]

というように、コメントアウト開始部分と終了部分が一行コメントアウトとして扱われるので簡単にコメントアウトをはずす事ができるわけです。

データの扱い

変数

C言語では、変数を宣言する際に型名を記述する必要がありました。
しかし、Luaではその必要がありません。

a = 0		-- 整数
b = 3.14	-- 実数
c = "Hello"	-- 文字列

上記のように記述するだけで、aという変数を宣言することが出来ます。
セミコロンは必要ありません。
また、Luaでは変数は全てグローバルとして扱われてしまうため注意が必要です。
ローカルとして宣言したい場合は、変数宣言時に

local a=0

のように、変数名の前にlocalと記述してやる必要があります。
C言語にはない特徴として、Luaでは多重代入を行うことが出来ます。
多重代入を行う際は

a , b , c = 1 , 2 , 3

のように記述します。
この書き方を用いてスワップを行うことも可能です。

a , b = b , a

上記のように書くことで、変数aと変数bの数値の入れ替えが出来ます。
C言語のように他に一時保存用の変数を用意する必要が無いので、うまく使いこなしましょう。

演算子

算術演算子
+		-- 足し算
-		-- 引き算
*		-- 掛け算
/		-- 割り算
^		-- 累乗
%		-- 剰余

LuaではC言語とは違い、算術演算子に累乗が含まれています。
上記の演算子を用いた計算例は以下を参照してください。

x = 9 + 2	-- 11
x = 9 - 2	-- 7
x = 9 * 2	-- 18
x = 9 / 2	-- 4.5
x = 9 ^ 2	-- 81  ( 9 * 9 == 81 )
x = 9 % 2	-- 1   ( 9 / 2 == 4 あまり 1 )

また、残念ですが+=演算子や++演算子Luaでは使うことが出来ません。

x = x + 2

のように記述して対応しましょう。

関係演算子
A == B		-- AはBと等しい
A ~= B		-- AとBは等しくない
A <  B		-- AはB未満
A >  B		-- BはA未満

左辺と右辺の不等を表す演算子の使用には注意してください。
C言語では!=ですが、Luaでは~=となります。
書き間違えやすい箇所なので、特に意識して記述するようにしましょう。

制御文

if文

Luaでif文を記述する際は

if 条件式 then
	条件が真のときに実行される文
end

というように記述します。
この書き方はCとは大きく離れているため、少し違和感を感じるかもしれませんが、慣れてください。
また、条件が偽のときにも処理を行いたい場合は

if 条件式 then
	条件が真のときに実行される文
else
	条件が偽のときに実行される文
end

という形になります。
endはelseの前には入りませんので注意してください。
条件が偽のときに、さらに条件式を用いて真偽で判別を行うには

if 条件式A then
	条件が真のときに実行される文
elseif 条件式B then
	条件式Aが偽で条件式Bが真のときに実行される文
end

と記述しましょう。
C言語ではelseとifの間にスペースを入れますが、Luaでは入れませんので注意が必要です。
また、if〜else文同様にendの位置には気をつけるようにしましょう。

for文

処理を規定回数実行するにはfor文を使用します。
例えば、処理を10回実行するには以下のように記述します。

for i = 1 , 10 doend

iの数値が10以下の間、文は実行されます。
iは一回のループにつき1ずつ加算されます。
もし、一回のループで加算される数値を1以外にしたい場合は

for i = 1 , 10 , 一回のループでiに加算する数値 doend

となります。
また、途中でfor文のループを抜けるには

break

を使用します。

while文

条件式が真のとき、常に処理を続行したいときにはwhile文を使用します。
文法は

while 条件式 do
	条件式が真のときに実行され続ける処理
end

のようになります。
またこちらもfor文と同様、途中でwhile文のループを抜けるには

break

を使用します。