从哈希中删除NilClass值

kem*_*102 0 ruby hash

我想NilClass从散列中删除值:

args = { 'name' => 'myname', 'description' => NilClass, 'homepage' => NilClass,
         'private' => NilClass, 'has_issues' => NilClass, 'has_wiki' => false,
         'has_downloads' => NilClass }
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

args.reject!{|k,v| v.nil?}
Run Code Online (Sandbox Code Playgroud)

这将返回原始哈希,并且所有值仍然存在.

Ric*_*ton 5

你有正确的想法,但NilClassRuby 的价值不是零.自己尝试一下吗?

NilClass.nil?
=> false
Run Code Online (Sandbox Code Playgroud)

你必须专门拒绝等于的值NilClass.

args.reject! { |key, value| value == NilClass }
Run Code Online (Sandbox Code Playgroud)