に私はそのcase文はそう、===
を使用して知っている:Rubyの場合と===タイプの比較
a = "foo"
=>"foo"
case a
when String
puts "hi"
end
=> hi
けど、妙:
a === String
=> false
私が何を、最後の式がtrueを返すように期待していました私は行方不明ですか?
ありがとうございます!
に私はそのcase文はそう、===
を使用して知っている:Rubyの場合と===タイプの比較
a = "foo"
=>"foo"
case a
when String
puts "hi"
end
=> hi
けど、妙:
a === String
=> false
私が何を、最後の式がtrueを返すように期待していました私は行方不明ですか?
ありがとうございます!
クラスは左側になければならない:以下の具体的なケースについて、その実施is_a?
String === a
=> true
変数のクラスがString
であることを確認するには、等価演算子==
を使用します。
> a.class == String
=> true
Case
文は平等ではない===
演算子を使用しています。さまざまなタイプの実装が異なります(詳細は、ドキュメント を参照してください)。
> String === 'foo'
=> true
> String === String
=> false
の例では、何が起こっているか説明するだろう、本当に自明ではないでしょうか? – Stefan
あなたのオリジナルの答えは質問とは無関係でした。私は具体的にこの表現について尋ねました:a =文字列で、型を比較する方法ではありません。私の答えを追加してうれしく思います。 – fabriciofreitag
私は同意する、私の元の回答は不完全だった。私はあなたの '=== '演算子の使用が間違っていたことを指摘したいと思い、私はすぐに答えようとしていました。私はあなたの答えを私の答えに付け加えなかった。あなたが答えの時間を見て、私の答えに編集するなら、まさに5分前です。とにかく、私はただ助けようとしていた – xeon131