Lua オペレーター


演算子は、インタープリターに特定の数学的または論理演算を実行するように指示するために使用される特別な記号です。 Lua は次の演算子タイプを提供します:

  • 算術演算子

  • 関係演算子

  • 論理演算子

  • その他の演算子


算術演算子

T以下に、Lua で一般的に使用される算術演算子のリストを示します。言語、A の値を 10 に、B の値を 20 に設定します:

を出力します
OperatorDescriptionExample
+AdditionA + 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 を返します

(A == B) は 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を返します。

次の例を使用して、関係演算子の適用をより完全に理解できます:

a = 21
b = 10

if( a == b )
then
   print("Line 1 - a 等于 b" )
else
   print("Line 1 - a 不等于 b" )
end

if( a ~= b )
then
   print("Line 2 - a 不等于 b" )
else
   print("Line 2 - a 等于 b" )
end

if ( a < b )
then
   print("Line 3 - a 小于 b" )
else
   print("Line 3 - a 大于等于 b" )
end

if ( a > b ) 
then
   print("Line 4 - a 大于 b" )
else
   print("Line 5 - a 小于等于 b" )
end

-- 修改 a 和 b 的值
a = 5
b = 20
if ( a <= b ) 
then
   print("Line 5 - a 小于等于  b" )
end

if ( b >= a ) 
then
   print("Line 6 - b 大于等于 a" )
end

上記のプログラムの実行結果は次のとおりです:

Line 1 - a 不等于 b
Line 2 - a 不等于 b
Line 3 - a 大于等于 b
Line 4 - a 大于 b
Line 5 - a 小于等于  b
Line 6 - b 大于等于 a

論理演算子

次の表は、一般的に使用される論理演算を示しています。 Lua 言語シンボルで、A の値を true に、B の値を false に設定します:

OperatorDescriptionInstance
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