Lua オペレーター
演算子は、インタープリターに特定の数学的または論理演算を実行するように指示するために使用される特別な記号です。 Lua は次の演算子タイプを提供します:
算術演算子
関係演算子
論理演算子
その他の演算子
算術演算子
T以下に、Lua で一般的に使用される算術演算子のリストを示します。言語、A の値を 10 に、B の値を 20 に設定します:
Operator | Description | Example |
---|---|---|
+ | Addition | A + B は結果 30 |
- | 減算 | A - Bは結果を出力します -10 |
* | 乗算 | A * Bは結果を出力します 200 |
/ | 除算 | B / A w出力結果2 |
% | 剰余を取る | B % A 出力結果 0 |
^ | べき乗 | A^2 出力結果 100 |
- | 負符号 | -A出力結果 v -10 |
例
次の例を通して、算術演算子の応用をより完全に理解することができます:
a = 21 b = 10 c = a + b print("Line 1 - c 的值为 ", c ) c = a - b print("Line 2 - c 的值为 ", c ) c = a * b print("Line 3 - c 的值为 ", c ) c = a / b print("Line 4 - c 的值为 ", c ) c = a % b print("Line 5 - c 的值为 ", c ) c = a^2 print("Line 6 - c 的值为 ", c ) c = -a print("Line 7 - c 的值为 ", c )
上記のプログラムの実行結果は次のとおりです:
Line 1 - c 的值为 31 Line 2 - c 的值为 11 Line 3 - c 的值为 210 Line 4 - c 的值为 2.1 Line 5 - c 的值为 1 Line 6 - c 的值为 441 Line 7 - c 的值为 -21
関係演算子
この表は、一般的に使用される関係演算子のリストです。 Lua 言語では、A の値を 10 に設定し、B の値を 20 に設定します。等しい場合は true を返し、そうでない場合は false を返します
~= | は等しくなく、2つの値が等しいかどうかを検出し、等しい場合はfalseを返し、そうでない場合はtrueを返します< | (A ~= B)はtrueです。 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
> | はより大きい、左側の値が右側の値より大きい場合はtrueを返し、それ以外の場合はfalseを返します | (A>B)はfalseです。 | |||||||||||||||||||
< | が小さい場合、左側の値が右側の値より大きい場合はfalseを返し、それ以外の場合はtrueを返します | (A<B)はtrueです。 | |||||||||||||||||||
>= | は、左側の値が右側の値以上である場合、trueを返し、それ以外の場合はfalseを返します | (A >= B) return間違い。 | |||||||||||||||||||
<= | 以下、左側の値が右側の値以下の場合はtrueを返し、それ以外の場合はfalseを返します | (A <= B) trueを返します。 | |||||||||||||||||||
Operator | Description | Instance |
---|---|---|
and | 論理 AND 演算子。 両方の操作が true の場合、条件は true になります。 | (AとB)は誤りです。 |
or | 論理OR演算子。 両側のいずれかの操作が true の場合、条件は true になります。 | (A または B) は true です。 |
not | 論理否定演算子。論理演算の結果に反して、条件が true の場合、論理否定は false になります。 | not(A と B) は true です。 |
例
次の例を通じて、論理演算子の適用をより完全に理解できます:
a = true b = true if ( a and b ) then print("a and b - 条件为 true" ) end if ( a or b ) then print("a or b - 条件为 true" ) end print("---------分割线---------" ) -- 修改 a 和 b 的值 a = false b = true if ( a and b ) then print("a and b - 条件为 true" ) else print("a and b - 条件为 false" ) end if ( not( a and b) ) then print("not( a and b) - 条件为 true" ) else print("not( a and b) - 条件为 false" ) end
上記のプログラムの実行結果は次のとおりです:
a and b - 条件为 true a or b - 条件为 true ---------分割线--------- a and b - 条件为 false not( a and b) - 条件为 true
その他の演算子
次の表はLua言語のリストです。連結演算子と、テーブルまたは文字列の長さを計算する演算子:
演算子 | 説明 | 例 |
---|---|---|
.. | 2 つの文字列 | a..b を連結します。ここで、 a は"Hello"、b は "World"、出力結果は "Hello World" になります。 |
# | 単項演算子は、文字列またはテーブルの長さを返します。 | #"Hello" Returns 5 |
インスタンス
次の例を使用すると、接続演算子とテーブルまたは文字列の長さを計算する演算子のアプリケーションをより完全に理解できます:
a = "Hello " b = "World" print("连接字符串 a 和 b ", a..b ) print("b 字符串长度 ",#b ) print("字符串 Test 长度 ",#"Test" ) print("w3cschoolphp中文网网址长度 ",#"www.w3cschool.cc" )
上記のプログラムの実行結果:
连接字符串 a 和 b Hello World b 字符串长度 5 字符串 Test 长度 4 w3cschoolphp中文网网址长度 16
演算子の優先順位
高い順に:
^ not - (unary) * / + - .. < > <= >= ~= == and or
^ と .. を除くすべての二項演算子は左結合されます。
a+i < b/2+1 <--> (a+i) < ((b/2)+1) 5+x^2*8 <--> 5+((x^2)*8) a < y and y <= z <--> (a < y) and (y <= z) -x^2 <--> -(x^2) x^y^z <--> x^(y^z)
例
次の例を通して、Lua 言語演算子の優先順位をより完全に理解することができます:
a = 20 b = 10 c = 15 d = 5 e = (a + b) * c / d;-- ( 30 * 15 ) / 5 print("(a + b) * c / d 运算值为 :",e ) e = ((a + b) * c) / d; -- (30 * 15 ) / 5 print("((a + b) * c) / d 运算值为 :",e ) e = (a + b) * (c / d);-- (30) * (15/5) print("(a + b) * (c / d) 运算值为 :",e ) e = a + (b * c) / d; -- 20 + (150/5) print("a + (b * c) / d 运算值为 :",e )
上記のプログラムの実行結果は次のとおりです:
(a + b) * c / d 运算值为 : 90.0 ((a + b) * c) / d 运算值为 : 90.0 (a + b) * (c / d) 运算值为 : 90.0 a + (b * c) / d 运算值为 : 50.0