我一直试图摆脱我的YAML文件中有空(空)值或空散列作为值的所有散列键。如何递归地从(YAML)散列中删除所有具有空值的键?
这earlier post帮助我得到它几乎正确,但递归单班轮离开我的YAML转储空的哈希每当有足够深的嵌套。
我真的很感谢这方面的帮助。谢谢!
proc = Proc.new { |k, v| (v.kind_of?(Hash) && !v.empty?) ? (v.delete_if(&proc); nil) : v.blank? }
hash = {"x"=>{"m"=>{"n"=>{}}}, 'y' => 'content'}
hash.delete_if(&proc)
实际输出
{"x"=>{"m"=>{}}, "y"=>"content"}
所需的输出
{"y"=>"content"}
我的版本(导轨): 类哈希 高清delete_blank delete_if { | k,v | v.blank?或(v.instance_of?(Hash)&& v.delete_blank.empty?)} end end – 2011-09-13 12:20:20
User blank?而不是空的?因为它会在零 – msroot 2014-07-02 00:23:09
失败你为什么使用delete_if而不是拒绝? – Donato 2016-03-21 21:30:15