2

私はLuaが初めてで、コードでこのタイプの何かを実行しようとしていますが、うまくいきません。ここでは、構文とすべてが完全に正しいのですが、elseif 条件がトスになり、条件チェックがうまくいきません。

したがって、このために得られる出力は次のとおりです。値= 40または42、これは間違っています

私が使用しているLuaのバージョンは5.2です

function call(a)
    print (a)
    if a == 40 or 42 then
    print ("Value = 40 or 42")
    elseif a == 43 or 45 then
    print ("Value = 43 or 45")
    elseif a == 46 or 47 then
    print ("Value = 46 or 47")
    end
end

a = 47
call(a)
4

3 に答える 3

13
if a == 40 or 42 then

40と42 のa両方と比較したいのですが、そうはいきません。これは二項演算子で、2 つの項目のみを比較するため、Lua はコードを次のように認識します。==

if (a == 40) or (42) then

Lua では、true でないnil、またはfalsetrue と評価されるものはすべて42、この式でも true です。だからあなたが本当に書いたのは:

if (a == 40) or true then

これは次と同じです:

if true then

すべての比較演算子はバイナリ (つまり、2 つのオペランドのみ) であるため、a複数のものと比較したい場合は、複数の比較演算子を使用する必要があります。

if (a == 40) or (a == 42) then
于 2012-06-20T16:58:32.967 に答える
3

関係演算子の使い方が間違っています。 or2 つの引数を取ります。引数 1 は関係式 (a==40) であり、引数 2 は (a==42) とは対照的に単なる数値 42 です。

あなたはやりたいが(a==40) or (a==42)、何が起こるかは(a==40) or (42)

したがって、コードは次のようになります。

function call(a)
    print (a)
    if a == 40 or a == 42 then
        print ("Value = 40 or 42")
    elseif a == 43 or a == 45 then
        print ("Value = 43 or 45")
    elseif a == 46 or a == 47 then
        print ("Value = 46 or 47")
    end
end

a = 47
call(a)

編集

ごめん。泥は確かに正しいです。それを指摘してくれてありがとう。私の答えを編集しました。

于 2012-06-20T10:48:43.757 に答える
0

「if 47 == 40 or 42」は 3 項ステートメントです。47 == 40 の場合は true を返し、false の場合は 42 を返します。'true' も '42' も false ではありません。

a が 40 または 42 の場合に true を返したい場合は、次のように記述します。

'if a == 40 or a == 42'

于 2013-01-13T17:01:45.837 に答える