pry(main)> s = {:a =>2, :d=>'foo', :x => ' ', :n => true, :z => nil}
=> {:a=>2, :d=>"foo"}
pry(main)> s.each do |k,v| p k unless v.empty? end
NoMethodError: undefined method `length' for 2:Fixnum
fixnumに空のメソッドがないために発生することを理解しています。次に、この問題を巧妙な方法で解決する方法を教えてください。最初にデータ型を見つけてからチェックするのは面倒ではありませんか?価値のあるものk
を印刷したい。v
はいtrue
は値と見なされますが、一連のスペースとは見なされません。私にとって「価値がある」とは、空でない文字とブール値の真を意味します。