私は例を作りました。それだけの数2を使用するのと同じだし、それがtrueを返しているように、明らかに2のみ2.なぜFixnum && Fixnumが最後の番号を返すのですか?
-1
A
答えて
1
等しいため、このコードで
if 22 && 2 == 2
puts "true"
else
puts "false"
end
は、見えます論理的に偽のRubyのものはnil
とfalse
です。 0
、空の文字列、空の配列、空のハッシュのようなものはすべてです。は論理的に真と見なされます。これは、true
またはfalse
のようなリテラルブール値に強制的にキャストする必要がないため、Rubyが&&
および||
のようなブール演算子をどのように処理するかに影響します。
このように、22 && 2
は論理的に偽ではありません。
1 && 2 && 3
# => 3
1 && false && 3
# => false
1 && 2 && nil
# => nil
false
が存在する二つの用語のいずれかである場合&&
操作はfalse
を返します唯一の方法は次のとおりです。&&
オペレータが動作する方法は、それが評価を破るか確認するために、最後の要素を返します。これは次のように発生する可能性があります。
1 && !1
# => false
これはfalse
としてので!1
evalutesです。
&&
の結果が常にブール値であるいくつかの言語で使用されることがありますが、ここでは該当しません。
アップデート:true
と評価さ
22 && true
:へのコースと同等である
22 && (2 == 2)
:ここで指摘されて何@meagarは、あなたのコードが実際にこのように評価されています。
関連する問題
- 1. Fixnumを別のFixnumで分割できないのはなぜですか?
- 2. 記号としてのFixnum
- 3. Rails:私の論理フィールドがFixnumを返すのはなぜですか?
- 4. Fixnumかは、Rubyの
- 5. to_intは:Fixnumか
- 6. 12345.classが 'Integer'を返すRubyで 'Fixnum'でない
- 7. 解決Fixnumかエラー
- 8. サブクラス化ルビのFixnum
- 9. なぜRubyはFixNum nを2n + 1にハッシュしますか?
- 10. Ruby:なぜfixnumクラスでsinglteonメソッドを定義できないのですか?
- 11. RubyのFixnumとBignumの最大値と最小値
- 12. 未定義のメソッド ` '2用:Fixnumか
- 13. Rubyの `Fixnum`と` 3`の違いは何ですか?
- 14. 最後の番号(1)が印刷されるのはなぜですか?
- 15. 未定義のメソッド 'ordinalize' for 3:Fixnum(NoMethodError)
- 16. シングルトンメソッドをSymbolまたはFixnumで定義できないのはなぜですか?
- 17. なぜ私は可変アペア番号を返すのですか?
- 18. なぜprint_r($ row);番号1だけを返すのですか?
- 19. ルビーエラー:未定義メソッド `any 'for 30:Fixnum(NoMethodError)
- 20. Foo.firstが最後のレコードを返すのはなぜですか?
- 21. RubyでFixnumの底10の対数を得るには?
- 22. Rails3 AJAXエラー - Fixnumかのための未定義のメソッド `MODEL_NAME」:クラス
- 23. getaddrinfoがHTTPのポート番号20480を返すのはなぜですか?
- 24. ルビー:間違った引数の型はnil(Fixnumかを予想)
- 25. SQL - 最高番号のタイトルを返す
- 26. FixNumにHerokuの "induced_from"メソッドがありません
- 27. Fixnumとnilの比較が失敗しました(ArgumentError)
- 28. `<= ':Fixnumと配列の比較が失敗しました(ArgumentError)
- 29. 最後のカテゴリ番号で番号を挿入したい
- 30. Ruby - 定義されていないfdivのメソッドfdivが0の場合:Fixnum
JavaScript、Python、* many * dynamic languagesと同じです。 – meagar
あなたはここで何を求めていますか?なぜあなたの式は*任意の*言語で 'false'と評価されますか?あなたの '&&'が失敗する言語がないことを知っています。これは、 '22'または' 2 == 2'がブール 'false'にキャストされていることを意味します。 1つは非ゼロの数であり、1つはブール値の「真」である。 – meagar
私は22 && 2が両方の数字を比較していると思っていましたが、それは起こっていません、今私は理解しています。 –