Luaの基本文法 Part1

以前書いたLuaの文法紹介記事を改めてまとめ直しました。
一つの記事にまとめるには少し長すぎるので複数回に分割して紹介します。


コメントアウト

一行コメントアウト

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

-- comment

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

複数行コメントアウト

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

--[[
	comment
]]

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

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

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

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

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

データの扱い

変数

Luaは動的型付け言語なので、変数を宣言する際に型名を記述する必要はありません。
下記のように記述するだけで、変数を宣言することが出来ます。

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

また、上記のように宣言した変数は全てグローバルとして扱われてしまうため注意が必要です。
もしローカルとして宣言したい場合は、

local a=0

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

a , b , c = 1 , 2 , 3

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

a , b = b , a

上記のように書くことで、変数aと変数bの数値の入れ替えが出来ます。
他に一時保存用の変数を用意する必要はありません。

演算子

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

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		-- AはB以下
A >  B		-- BはA未満
A >= B		-- AはB以下

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

論理演算子

論理演算子には and , or , not があります。
論理演算子では false と nil を偽とし、それ以外を真として扱います。

-- and演算子
-- 左項が偽であれば左項が返る
print(nil and 2)	-- nil
print(false and 2)	-- false
-- 左項が真であれば右項が返る
print(1 and 2)		-- 2

-- or演算子
-- 左項が真であれば左項が返る
print(1 or 2)		-- 1
-- 左項が偽であれば右項が返る
print(nil or 2)		-- 2
print(false or 2)	-- 2

-- not演算子
-- 偽であればtrueが返る
print(not nil)		-- true
print(not false)	-- true
-- 真であればfalseが返る
print(not 1)		-- false

and と or は左項から順番に評価されます。



とりあえず今回はここまで。
次回は制御構造について扱います。