Тестирование, если хэш имеет любое из нескольких ключей
Мне было интересно, есть ли лучший способ проверить, имеет ли хэш какие-либо ключи из массива. Я хочу использовать его примерно так:
keys = %w[k1 k2 k5 k6]
none = true if hash.key?(keys)
Или мне придется зацикливать это?
Ответы
Ответ 1
Нет необходимости в цикле:
(hash.keys & keys).any? # => true
Пояснение:
.keys
возвращает все ключи в хеше как массив. &
пересекает два массива, возвращая любые объекты, которые существуют в обоих массивах. Наконец, .any?
проверяет, имеет ли массив пересечение любые значения.
Ответ 2
keys.any? { |i| hash.has_key? i }