Roblox(ロブロックス)のゲーム開発のスクリプト言語に使われているLuaスクリプトに関する解説です。
ここではLuaプログラミングの基本となる変数や式、演算子について説明しています。
変数について
代入、多重代入について
Luaでは代入式のイコール=
を使って変数に値を代入することができます。
i = 1
str = 'Foo'
一般的に代入は左辺に変数名があり、右辺に値や式が記述されます、Luaでは左辺、右辺それぞれに複数要素を記述することができます(多重代入)。
要素は,
で区切り、左辺と右辺の要素数は同じである必要があります。
i, j, k = 1, 2, 3
一方、C言語などで有効な代入の連接はできません。
--この構文はエラーです。
i = j = k = 1
多重代入の処理は先に式が評価され、そののちに代入が行われます。下記のコードでは、i = 4
の代入は全体の式の評価の後に行われるため、a[3] = 20
の代入が行われるがa[4]
は影響されません。
i = 3
i, a[i] = i+1, 20
以下のようにすることで、変数x
とy
を入れ替えることができます。
x, y = y, x
ローカル変数の宣言
ローカル変数はlocal
文で宣言します。ローカル変数はブロック内のどこでも宣言が可能で、また宣言とともに初期値を代入することもできます。
local name = 'ほげほげ'
初期値の代入がされない場合、すべての変数はnil
で初期化されます。
演算子について
算術演算子
記号 | 効果 |
+ | 加算 |
– | 除算 |
* | 乗算 |
/ | 除算(浮動小数点) |
// | 切り捨て除算 |
% | 余り |
^ | 累乗 |
– | 単項マイナス |
ビット演算子
記号 | 効果 |
& | ビットごとの論理積(AND) |
| | ビットごとの論理和(OR) |
~ | ビットごとの排他的論理和(XOR) |
>> | 右シフト |
<< | 左シフト |
~ | 単項ビットごとの否定 |
比較演算子
記号 | 効果 |
== | 等しい |
~= | 等しくない |
< | より小さい(等値を含めない) |
> | より大きい(等値を含めない) |
<= | 以下(等値を含める) |
>= | 以上(等値を含める) |
演算子はtrue
かfalse
のいずれかを返します。
型が異なる場合はfalse
を返します。
table
型、userdata
型、thread
型の場合は参照が比較されます。同一のオブジェクトのみtrue
となります。
NaN
はNaN
自身を含むあらゆる値とも等しくもなく、大きくもなく、小さくのないものとみなされます。
論理演算子
記号 | 効果 |
and | 双方の条件がいずれも成立すればtrue(AND) |
or | 双方いずれかの条件が成立すればtrue(OR) |
not | 双方の条件が異なればtrue(NOT) |
文字列の連結
記号 | 効果 |
.. | 文字列を連結する |
stringもしくはnumber型の場合、文字列として連結されます。