演算子 は、操作または条件評価を実行するシンボルです。
ロジカル
論理演算子は、指定された引数のブール値に応じて値を返します。引数が false または nil でない場合、オペレータはそれを true として評価します。他の多くの言語とは異なり、Luauはゼロと空の文字列の両方を true と考えます。次の表は、論理オペレーターが 条件付き でどのように動作するかを概要しています。
オペレータ | 説明 |
---|---|
and | 両方の条件が真である場合にのみ true として評価 |
or | どちらかの条件が真である場合は true と評価します |
not | 条件の反対として評価する |
そして
バイナリ演算子 and は、2つの引数の 1つを返します。最初の引数が true に評価される場合、それは第二の引数を返します。そうでないと、最初の引数を返します。
print(4 and 5) -- 5print(nil and 12) -- なしprint(false and 12) -- 偽print(false and true) -- 偽print(false and false) -- 偽print(true and false) -- 偽print(true and true) -- true
You can use and to test multiple conditions in コントロール構造 such as if 文章 と while ループ .たとえば、次の if ‑ then 文は、2つの条件がともに真であることをテストします:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
or
バイナリ演算子 or は、2つの引数の 1つを返します。最初の引数が true に評価される場合、最初の引数を返します。そうでないと、2番目の引数を返します。
local y = x or 1print(y) -- 1は、xが存在しないため、それゆえゼロですlocal d = falselocal e = d or 1print(e) -- 1は、dが偽であるためprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- 真print(false or false) -- 偽print(true or false) -- 真print(true or true) -- true
or を使用して、コントロール構造 で複雑な論理テストを実行できます。たとえば、次の if ‑ then 文は、2つの条件が真であるか、 または 3つ目の条件が真であるかをテストします:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
ない
単一オペレーター not は、引数の反対のブール値を返します。引数が false または nil である場合、それは true を返します。そうでないと、false を返します。
print(not true) -- 偽print(not false) -- 真print(not nil) -- 真print(not "text") -- 偽print(not 0) -- false
変数が not または false である場合、条件付きまたはループをトリガーするには、nil オペレータを使用できます。
local nilVariable -- 変数は宣言されましたが値がありませんので、ゼロですlocal falseVariable = false -- 変数は false の値で宣言されますif not nilVariable thenprint(nilVariable) -- nil が真ではないので「nil」を出力するendif not falseVariable thenprint(falseVariable) -- 「偽」を出力します。偽は真ではありませんend
また、not オペレーターを使用して、全体のマルチ条件文の反対をテストできます。次のコードサンプルでは、3 が 4 より大きいことも、5 が 4 より大きいこともない条件付きテストの if - then が、以下のコードサンプルでは、3 が 4 より大きいことも、5 が 4 より大きいこともありません。
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
関係性
関係オペレータは 2つのパラメータを比較し、boolean : true または false を返します。
オペレータ | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
== | 等しい to | 3 == 5 → false | __eq |
~= | 同じではない | 3 ~= 5 → true | |
> | 大き于 | 3 > 5 → false | |
< | 未満 | 3 < 5 → true | __lt |
>= | 大き于または等しい | 3 >= 5 → false | |
<= | 小さ于または等しい | 3 <= 5 → true | __le |
算術
Luau は、 exponentiation、modulus、および unary negation とともに通常のバイナリオペレータをサポートします。
オペレータ | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
+ | 追加 | 1 + 1 = 2 | __add |
- | 減算 | 1 - 1 = 0 | __sub |
* | 乗算 | 5 * 5 = 25 | __mul |
/ | 分割 | 10 / 5 = 2 | __div |
// | フロア分割 | 10 // 4 = 2 -10 // 4 = -3 | __idiv |
^ | 経験乗数 | 2 ^ 4 = 16 | __pow |
% | モジュール | 13 % 7 = 6 | __mod |
- | 単一の否定 | -2 = 0 - 2 | __unm |
コンパウンド割り当て
コンパウンド割り当てオペレータを使用して、最初のパラメータが変数の現在の値である操作の結果と同じ変数を設定できます。
複合割り当ての操作は 1回発生します。たとえば、式がテーブルでランダムなインデックスを生成する場合、Luauは操作と割り当ての両方に同じインデックスを使用します。
次の例では、local x = 3 を想定します。
オペレータ | 操作 | 例 | 新しい値の x |
---|---|---|---|
+= | 追加 | x += 2 | 5 |
-= | 減算 | x -= 2 | 1 |
*= | 乗算 | x *= 2 | 6 |
/= | 分割 | x /= 2 | 1.5 |
//= | フロア分割 | x //= 2 | 1 |
%= | モジュール | x %= 2 | 1 |
^= | 経験乗数 | x ^= 2 | 9 |
..= | 結合 | x ..= " World!" | "3 World!" |
その他
その他のオペレーターには、 結合 と 長さ が含まれます。
オペレータ | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
.. | 2つのストリングを結合する | print("Hello " .. "World!") | __concat |
# | タブの長さ | If tableVar = {1, 2, 3} 、 then #tableVar == 3 。 | __len |