Как я могу подтвердить, что все элементы хеша определены? Каков наилучший способ проверить, определены ли все объекты в хеше Ruby (но нет)? Оператор должен возвращать значение false, если хотя бы один элемент в хеш равен нулю. Ответ 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
Ответ 1 Вы можете использовать all?, чтобы проверить, является ли данный предикат истинным для всех элементов перечислимого. Итак: hash.values.all? {|x| !x.nil?} или hash.all? {|k,v| !v.nil?} Если вы также хотите проверить, все ключи не ноль, вы можете изменить это: hash.all? {|k,v| !v.nil? && !k.nil?}
Ответ 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