Тестирование, если хеш имеет какой-либо из нескольких ключей - PullRequest
20 голосов
/ 20 января 2011

Мне было интересно, есть ли лучший способ проверить, есть ли у хэша какие-либо ключи из массива. Я хочу использовать что-то вроде этого:

keys = %w[k1 k2 k5 k6]
none = true if hash.key?(keys)

Или мне придется это зациклить?

Ответы [ 2 ]

67 голосов
/ 20 января 2011

Нет необходимости в цикле:

(hash.keys & keys).any? # => true

Пояснение:

.keys возвращает все ключи в хэше в виде массива. & пересекает два массива, возвращая любые объекты, которые существуют в обоих массивах. Наконец, .any? проверяет, есть ли у пересечения массива какие-либо значения.

6 голосов
/ 20 января 2011
keys.any? { |i| hash.has_key? i }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...