私のルビーコードには次のような単純な条件があります。
if user.text != ("Empty" || "Damaged")
何かをする...
それが「損傷」しているとき、それはまだループに入るので、私はこれを使わなければならないということです:
if user.text != "Empty"
if user.text != "Damaged"
...
..
最初のものを機能させるための正しい構文は何ですか?ありがとう!
私のルビーコードには次のような単純な条件があります。
if user.text != ("Empty" || "Damaged")
何かをする...
それが「損傷」しているとき、それはまだループに入るので、私はこれを使わなければならないということです:
if user.text != "Empty"
if user.text != "Damaged"
...
..
最初のものを機能させるための正しい構文は何ですか?ありがとう!
これを使って:
unless ["Empty", "Damaged"].include?(user.text)
...
end
最初のアプローチの問題は、次のことをa || b
意味します。それがそうである場合a != nil
、a
そうでない場合はですb
。ご覧のとおり、変数がゼロになることはめったにないため、定数ではなく変数に適しています。あなたの表現("Empty" || "Damaged")
は単にに等しい"Empty"
。
これを二項演算子として使用する場合、正しい形式は次のようになります。
if (user.text != "Empty") && (user.text != "Damaged")
上の解はちょうど短いです。避けたい要素の配列で構成されており、user.text
存在しないかどうかを確認するだけです。
@Matziには確かに正しい答えがあります。しかし、あなたがやっていることは失敗している理由です:
あなたのステートメント("Empty" || "Damaged")
は「空」と評価されます
あなたは、これらのいずれか、最初に見つけた偽でないものを返すと言っています。Ruby では、任意の文字列、数値、またはオブジェクトが true を返すため、毎回 "Empty" を返します。
if ステートメントを本当に使用したい場合は、次のようにレイアウトすることをお勧めします。
if user.text != "Empty" && user.text != "Damaged"
...
end
ちなみに、「ユーザーテキストが破損していないか空でない場合」と言おうとしていると思います。
それが役立つことを願っています。
if ((テキスト != "空") && (テキスト != "破損"))