ハッシュに配列のキーがあるかどうかをテストする方法があるのかどうか疑問に思っていました。私は次のようなものを使いたい:ハッシュに多数のキーがあるかどうかのテスト
keys = %w[k1 k2 k5 k6]
none = true if hash.key?(keys)
これをループする必要がありますか?
ハッシュに配列のキーがあるかどうかをテストする方法があるのかどうか疑問に思っていました。私は次のようなものを使いたい:ハッシュに多数のキーがあるかどうかのテスト
keys = %w[k1 k2 k5 k6]
none = true if hash.key?(keys)
これをループする必要がありますか?
ループする必要はありません:
(hash.keys & keys).any? # => true
説明:配列として
.keys
戻るハッシュ内のすべてのキーを。 &
は2つの配列を交差させ、両方の配列に存在するオブジェクトを返します。最後に、.any?
は、配列の交差に値があるかどうかを調べます。
+1謎解き! :-) –
まあ...自分自身をルーピングすることはありませんが、テストのためにあまりにも多くのことをする必要があります。それはまだエレガントな答えですが、必ずしも絶対的な性能を発揮するとは限りません。 – Phrogz
Bam!ありがとう、相棒 –
keys.any? { |i| hash.has_key? i }
私はこの質問に「rails」タグが付いている理由はわかりません。 – Nakilon
私はあなたが楽しい警察になる必要がある理由はわかりません。 –
どういう意味ですか? – Nakilon