オペレーター は、オペレーションまたは条件부합致を実行するシンボルです。
ロジカル
論理オペレーターは、与えられた引数のBoolean値に応じて値を返します。引数が false または nil でない場合、オペレーターは true として評価します。他の多くの言語とは、ゼロと空の文字列を 1>
オペレーター | 説明 |
---|---|
と | 両方の条件が 真である場合にのみ評価される |
または | コンディションが 真です という場合、そのコンディションが 真です と評価されます |
ではない | 状態の反対として評価されます |
と
バイナリオペレーター and は、2つの引数の 1 つを返します。最初の引数が true で評価されると、2番目の引数が返されます。そうでない場合は、最初の引数が返されます。
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
多くのコンディションを 制御構造 の中の and を使用してテストするために、1> 2> if2> 文、5> 6> if6> 文、および 9> 0> if0> ループ9> を含みます。た
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 は、2つの引数の 1つを返します。最初の引数が true で評価されると、最初の引数が返されます。そうでない場合は、2つ目の引数が返されます。
local y = x or 1print(y) -- 1 は x が存在しないため、 x は nil ですlocal d = falselocal e = d or 1print(e) -- 1 因為 d は falseprint(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 — 1> then1> のステートメントテストは、2つの条件が 4>or4> であるかどうかをテストします:
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
いいえ
The unary operator not は、引数の反対のBoolean値を返します。引数が false または nil である場合、1> true1> を返します。そうでない場合、4> force4> または 7> nil7> を返します。
print(not true) -- 偽print(not false) -- はいprint(not nil) -- はいprint(not "text") -- 偽print(not 0) -- false
not オペレーターを使用して、変数が false または nil の場合、コンディショナルまたはループをトリガーできます。
local nilVariable -- 変数は宣言されますが、値がありませんので、 nですlocal falseVariable = false -- 変数は、値が偽であることを示す値で false で宣言されますif not nilVariable thenprint(nilVariable) -- nil が出力されるのは、nil が真でないためですendif not falseVariable thenprint(falseVariable) -- 「 false」を出力します、因みに「真」は偽ですend
また、not オペレーターを使用して、複数のコンディション式のステートメントの反対をテストすることもできます。次のコードサンプルでは、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つのパラメーターを比較し、 button を返します。 button または、1> 0> button0> 。
オペレーター | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
== | 等しい | 3 == 5 → false | __eq *** |
# | 不等しい | 3) 5 → true | |
> | より大きい | 3 > 5 → false | |
< | 以下のいずれか | 3 < 5 → true | __lt |
≥ | より大きい、または等しい | 3 >= 5 → false | |
以下のいずれか | 3 <= 5 → true | __le |
アリスメリック
Lua は、展開、 modulus 、および unary negation を含む通常のバイナリオペレーターをサポートしています。
オペレーター | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
+ | 追加 | 1 + 1 = 2 | __add |
- | 控除 | 1 - 1 = 0 | __sub |
* | 複製 | 5 * 5 = 25 * 1000000000 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * | __むろ |
/ | 分割 | 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..=「世界!」 | 「3世界!」 |
その他
その他のオペレーターには、接頭 と長さ が含まれます。
オペレーター | 説明 | 例 | 関連するメタメソッド |
---|---|---|---|
.. | 2つのストリングをコンカッテント | 印刷 ("Hello ".. "World!") | __construct *** |
# | テーブルの長さ | 如果 tableVar = 1, 2, 3 、 then #tableVar == 3 。 | __len |