Luaプログラミング式
2035 ワード
式は値を表すために使用されます.Luaの式には、数値定数、文字列、変数、一元オペレータ、および関数呼び出しが含まれます.従来とは異なり,Luaの式には関数定義とtable構造式を含めることができる.
さんじゅつオペレータ
Luaが従来の算術オペレータをサポートするのは、2元の加算("+")、減算("-")、乗算("*")、除算("/")、指数("^")、型取り("%");1元のマイナス記号(-)、これらの操作はすべて実数に使用できます.
ここで、型取りオペレータは、a%b==a−floor(a/b)*bという規則に従って定義される.
整数の場合、上記の式の計算結果の記号は常に2番目のパラメータと同じです.
実数の場合、x%1=xの小数部;x-x%1=xの整数部分;同様に、x−x%0.01は小数点以下の2桁の結果に正確である.
リレーショナルオペレータ
Luaは、<><=>===~=これらの関係オペレータを提供します.これらのオペレータの演算結果はすべてtrueまたはfalseです.2つの値に異なるタイプがある場合、Luaは等しくないと考えます.そうでなければ、Luaは彼らのタイプによって両者を比較します.ここでnilはそれ自体と等しいだけです.
Table、userdata、および関数については、同じオブジェクトを参照している場合にのみ等しいとみなされます.
Luaでは2つの数字または2つの文字列のみをサイズ比較できます.Luaは文字列をアルファベット順に比較し、具体的なアルファベット順はLuaの領域設定に依存する.数値と文字列以外のタイプは、等しいか等しくないかの比較しかできません.
ろんりオペレータ
論理オペレータにはand,or,notがあります.条件制御文と同様に、すべての論理オペレータはfalseとnilを偽と見なし、他のものを真と見なします.
andの場合、その最初のオペランドが偽である場合、最初のオペランドが返される.そうでない場合は、2番目のオペランドを返します.
orの場合、最初のオペランドが真の場合、最初のオペレータが返されます.そうでない場合は、2番目のオペランドを返します.
andもorも「短絡評価」を使用しており、必要に応じて2番目のオペランドを評価するだけです.(「type(v)=」「table」and v.tag==「h 1」)
よく使うルアの書き方
文字列接続
Luaには2つの文字列が接続されており、オペレータ「..」を使用することができます.いずれかのオペランドが数字であれば、Luaはその数字を文字列に変換します.
Luaの文字列は可変値です.接続オペレータは、元のオペランドを変更することなく、新しい文字列のみを作成します.
優先度
Luaオペレータの優先度:
^
not#-(一元)
* / %
+ -
..
< > <= >= ~= ==
and
or
バイナリ操作では、インデックスオペレータとリンクオペレータが「右結合」である以外は、すべてのオペレータが「左結合」です.
さんじゅつオペレータ
Luaが従来の算術オペレータをサポートするのは、2元の加算("+")、減算("-")、乗算("*")、除算("/")、指数("^")、型取り("%");1元のマイナス記号(-)、これらの操作はすべて実数に使用できます.
ここで、型取りオペレータは、a%b==a−floor(a/b)*bという規則に従って定義される.
整数の場合、上記の式の計算結果の記号は常に2番目のパラメータと同じです.
実数の場合、x%1=xの小数部;x-x%1=xの整数部分;同様に、x−x%0.01は小数点以下の2桁の結果に正確である.
x = math.pi
print(x - x%0.01) ------->3.14
リレーショナルオペレータ
Luaは、<><=>===~=これらの関係オペレータを提供します.これらのオペレータの演算結果はすべてtrueまたはfalseです.2つの値に異なるタイプがある場合、Luaは等しくないと考えます.そうでなければ、Luaは彼らのタイプによって両者を比較します.ここでnilはそれ自体と等しいだけです.
Table、userdata、および関数については、同じオブジェクトを参照している場合にのみ等しいとみなされます.
a = {}
a.x = 1
a.y = 0
b = {}
b.x = 1
b.y = 0
c = a
:a == c, a ~= b
Luaでは2つの数字または2つの文字列のみをサイズ比較できます.Luaは文字列をアルファベット順に比較し、具体的なアルファベット順はLuaの領域設定に依存する.数値と文字列以外のタイプは、等しいか等しくないかの比較しかできません.
ろんりオペレータ
論理オペレータにはand,or,notがあります.条件制御文と同様に、すべての論理オペレータはfalseとnilを偽と見なし、他のものを真と見なします.
andの場合、その最初のオペランドが偽である場合、最初のオペランドが返される.そうでない場合は、2番目のオペランドを返します.
and , 。 。
orの場合、最初のオペランドが真の場合、最初のオペレータが返されます.そうでない場合は、2番目のオペランドを返します.
or , , 。
andもorも「短絡評価」を使用しており、必要に応じて2番目のオペランドを評価するだけです.(「type(v)=」「table」and v.tag==「h 1」)
よく使うルアの書き方
"x = x or v"
if not x then x = v end
文字列接続
Luaには2つの文字列が接続されており、オペレータ「..」を使用することができます.いずれかのオペランドが数字であれば、Luaはその数字を文字列に変換します.
Luaの文字列は可変値です.接続オペレータは、元のオペランドを変更することなく、新しい文字列のみを作成します.
a = "hello"
print(a .. "world") --- >helloWorld
print(a) ----> hello
優先度
Luaオペレータの優先度:
^
not#-(一元)
* / %
+ -
..
< > <= >= ~= ==
and
or
バイナリ操作では、インデックスオペレータとリンクオペレータが「右結合」である以外は、すべてのオペレータが「左結合」です.