我々は入力します。なぜLuaの==はこのように動作していますか? Luaのインタプリタで
>print(1=="1")
false
[OK]を罰金を!
>print(false==true)
false
大丈夫です。
>print(string==math)
false
でも、なぜですか?
>print(function==nil)
stdin:1: '(' expected near '=='
私は==と〜=の作業を理解していません。
我々は入力します。なぜLuaの==はこのように動作していますか? Luaのインタプリタで
>print(1=="1")
false
[OK]を罰金を!
>print(false==true)
false
大丈夫です。
>print(string==math)
false
でも、なぜですか?
>print(function==nil)
stdin:1: '(' expected near '=='
私は==と〜=の作業を理解していません。
print(function==nil)
はあなたにエラーメッセージが表示されます説明してください:
標準入力:1: '('
function
を定義するために使用されるキーワードです
ので '==' の近くに期待そのキーワードは特定の構文で使用されることが期待されていますfunction
はそれ自体で有効なLua式ではないため、1つとして使用することはできません。通常はfunction
の後に(
が続くと予想しています。
https://www.lua.org/manual/5.3/manual.html#3.4.11 とhttps://www.lua.org/manual/5.3/manual.html#3.4とhttps://www.lua.org/manual/5.3/manual.html#3.4.5
と何かをお読みください:)
文字列と数学は両方のLua標準ライブラリです。文字列と数学は2つの異なるLuaテーブルです。したがって、それらは同じであることはできません。したがって、式string == mathはfalseです。
https://www.lua.org/manual/5.3/manual.html#3.4から:
のLuaでの基本的な式は次のとおりです。
EXP :: = prefixexp
EXP :: = nilを|偽|真
EXP :: =数字
EXP :: = LITERALSTRING
EXP :: = functiondef
EXP :: = tableconstructor
EXP :: = '...'
exp :: = exp binop exp
exp :: = unop exp
prefixexp :: = var | functioncall | '(' exp ')
表示されているように、Luaキーワードnil、false、trueは表示されています。他のキーワードはそうではありません。
mathとstringにはLuaキーワードがありません。それらはテーブル型の変数です。また、変数も式です。だからあなたはエラーを受け取りませんmath == string
質問は、LuaのリファレンスマニュアルとLuaでのプログラミングを読むことで最もよく答えられます。
私はあなたが開始beforそこにあるすべてを知っているべきであると言うことはありません。しかし、非常に基本的なことを知ることは、あなたの学習経験とあなたの理解を加速させます!
なぜ 'string'は' math'と同じでなければなりませんか? 'function'はキーワードですが変数ではないので、' function == nil'は全く意味がありません。 – moteus
'=='引数が等しいかどうかをチェックします。起こると思われることを知らずに、あなたの理解が間違っている場所を説明するのは難しいです。あなたは 'string == math'がfalse以外の結果を与えると思いますか?あなたは 'print(function == nil)'の結果と何を期待しましたか? –
@ChrisHそれは事です!文字列と数学は標準ライブラリの一部です。もし文字列と数学が偽であるなら、それらは等しくなるような意味を持たないからです。関数とnilもfalseでなければならないが、そうではない。代わりにエラーがスローされます。 –