Тестирование, если хэш имеет любое из нескольких ключей Мне было интересно, есть ли лучший способ проверить, имеет ли хэш какие-либо ключи из массива. Я хочу использовать его примерно так: 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 }
Ответ 1 Нет необходимости в цикле: (hash.keys & keys).any? # => true Пояснение: .keys возвращает все ключи в хеше как массив. & пересекает два массива, возвращая любые объекты, которые существуют в обоих массивах. Наконец, .any? проверяет, имеет ли массив пересечение любые значения.