私は、チュートリアルを使用しています、そしてそれは、このような条件があります。Rubyブーリアンでは、等価文がないかどうかチェックしていますか?
if Restaurant.method1
puts "XXX"
elsif Restaurant.method2
puts "YYY"
end
どちらの方法がtrue
またはfalse
のブール値を返します。私は正確にあなたが何も等号演算子(==
)または代入演算子(=
)がないことを考慮するためにチェックしているか疑問に思って
if x
puts "XXX"
else
puts "YYY"
end
:同様に、変数のために、私は似た何かを見たことがありますか?論理的に私の頭の中でこれを考えているので、おそらくRubyの単純な性質によって隠されている何らかの等価性チェックがなければなりません。もしIf If xとIf If Restaurant.methodはどちらも本当に意味をなさない何らかのチェックなしで条件付きです。
これはまったく同じことです。 'if Restaurant.method1'は、メソッド' method1'を呼び出す戻り値が真偽であるかどうかを 'if 2 == 3'でチェックし、' == 'メソッドを呼び出す戻り値がtrueであるかどうかをチェックします。 'a '<=' b''ならば、' <= 'メソッドを呼び出す戻り値が真実かどうかをチェックします。なぜそれがメソッドの名前で何か違いを生むのだろうか? –
私は正確に何を確認しているのだろうと思っていた。 '== true'(これは本当のことを意味すると信じています)がなければ、x /メソッド名がどういう場合に直感的に知ることができません。 – developer098
しかし、 '=='は単なるメソッドであり、*正確には 'method1'のようなものです。名前を除いて、2つの間にゼロ差があります。だから、まったく同じ2つの違いがあるのはなぜですか? 'if'式の条件の中で一つのメソッドを呼び出すのは、なぜ別のメソッドを呼び出すのと違うのですか? 'a == b 'の場合、' == 'メソッドを呼び出す戻り値は真実性がチェックされます。 'a.foo(b)'の場合、 'foo'メソッドを呼び出す戻り値は真実性がチェックされます。 –