2017-11-27 6 views
0

に私はそのcase文はそう、===を使用して知っている:Rubyの場合と===タイプの比較

a = "foo" 
=>"foo" 

case a 
when String 
    puts "hi" 
end 
=> hi 

けど、妙:

a === String 
=> false 

私が何を、最後の式がtrueを返すように期待していました私は行方不明ですか?

ありがとうございます!

答えて

1

クラスは左側になければならない:以下の具体的なケースについて、その実施is_a?

String === a 
=> true 
0

変数のクラスがStringであることを確認するには、等価演算子==を使用します。

> a.class == String 
=> true 

Case文は平等ではない===演算子を使用しています。さまざまなタイプの実装が異なります(詳細は、ドキュメント を参照してください)。

> String === 'foo' 
=> true 

> String === String 
=> false 
+0

の例では、何が起こっているか説明するだろう、本当に自明ではないでしょうか? – Stefan

+0

あなたのオリジナルの答えは質問とは無関係でした。私は具体的にこの表現について尋ねました:a =文字列で、型を比較す​​る方法ではありません。私の答えを追加してうれしく思います。 – fabriciofreitag

+0

私は同意する、私の元の回答は不完全だった。私はあなたの '=== '演算子の使用が間違っていたことを指摘したいと思い、私はすぐに答えようとしていました。私はあなたの答えを私の答えに付け加えなかった。あなたが答えの時間を見て、私の答えに編集するなら、まさに5分前です。とにかく、私はただ助けようとしていた – xeon131

関連する問題