你可以像这样添加一个紧凑的散列方法
class Hash
def compact
delete_if { |k, v| v.nil? }
end
end
或者对于支持递归的版本
class Hash
def compact(opts={})
inject({}) do |new_hash, (k,v)|
if !v.nil?
new_hash[k] = opts[:recurse] && v.class == Hash ? v.compact(opts) : v
end
new_hash
end
end
end