Подтвердить что ты не робот

Как я могу подтвердить, что все элементы хеша определены?

Каков наилучший способ проверить, определены ли все объекты в хеше Ruby (но нет)?

Оператор должен возвращать значение false, если хотя бы один элемент в хеш равен нулю.

4b9b3361

Ответ 1

Вы можете использовать all?, чтобы проверить, является ли данный предикат истинным для всех элементов перечислимого. Итак:

hash.values.all? {|x| !x.nil?}

или

hash.all? {|k,v| !v.nil?}

Если вы также хотите проверить, все ключи не ноль, вы можете изменить это:

hash.all? {|k,v| !v.nil? && !k.nil?}

Ответ 2

Другой способ:

!hash.values.include? nil

Ответ 3

Enumerable#all? делает именно то, что вам нужно.

Ответ 4

Определяется элемент (значение) nil. Он определяется как объект nil.

Если вы хотите проверить, отсутствуют ли какие-либо ключи, выполните следующие действия:

hash = {:key1 => nil, :key2 => 42, :key3 => false}
keys = [:key1, :key2, :key3]
all_defined = keys.all?{|key| hash.has_key?(key)} # Returns true