2015-10-08 3 views
0

Я хочу, чтобы удалить значения NilClass из хэша:значения Удаление NilClass из хэшей

args = { 'name' => 'myname', 'description' => NilClass, 'homepage' => NilClass, 
     'private' => NilClass, 'has_issues' => NilClass, 'has_wiki' => false, 
     'has_downloads' => NilClass } 

Я попытался следующие:

args.reject!{|k,v| v.nil?} 

Это возвращает исходный хэш со всеми значениями по-прежнему присутствует.

+0

Это звучит как проблема XY. Начнем с выяснения того, как они туда попадают. Вы разбираете что-то, а значения отсутствуют, а хеш заканчивается нилсом? Если это так, лучше иметь дело с первой проблемой, поэтому у вас нет нил, чем для создания пучки нулевых значений, а затем их нужно очистить. –

ответ

5

Вы имели правильную идею, однако значение NilClass в Ruby не ноль. Попробуйте сами?

NilClass.nil? 
=> false 

Вы должны определенно отвергнуть значения, равные NilClass.

args.reject! { |key, value| value == NilClass } 
+1

Вы можете использовать '_' для ключевого аргумента, так как вам действительно все равно. – Makoto

Смежные вопросы