広告

【Roblox開発】Luaの基本:変数、式、演算子について

Roblox

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

以下のようにすることで、変数xyを入れ替えることができます。

x, y = y, x

ローカル変数の宣言

ローカル変数はlocal文で宣言します。ローカル変数はブロック内のどこでも宣言が可能で、また宣言とともに初期値を代入することもできます。

local name = 'ほげほげ'

初期値の代入がされない場合、すべての変数はnilで初期化されます。

演算子について

算術演算子

記号効果
+加算
除算
*乗算
/除算(浮動小数点)
//切り捨て除算
%余り
^累乗
単項マイナス

ビット演算子

記号効果
&ビットごとの論理積(AND)
|ビットごとの論理和(OR)
~ビットごとの排他的論理和(XOR)
>>右シフト
<<左シフト
~単項ビットごとの否定

比較演算子

記号効果
==等しい
~=等しくない
<より小さい(等値を含めない)
>より大きい(等値を含めない)
<=以下(等値を含める)
>=以上(等値を含める)

演算子はtruefalseのいずれかを返します。

型が異なる場合はfalseを返します。

table型、userdata型、thread型の場合は参照が比較されます。同一のオブジェクトのみtrueとなります。

NaNNaN自身を含むあらゆる値とも等しくもなく、大きくもなく、小さくのないものとみなされます。

論理演算子

記号効果
and双方の条件がいずれも成立すればtrue(AND)
or双方いずれかの条件が成立すればtrue(OR)
not双方の条件が異なればtrue(NOT)

文字列の連結

記号効果
..文字列を連結する

stringもしくはnumber型の場合、文字列として連結されます。

タイトルとURLをコピーしました