条件が満たされたときにOpenStruct
の値を更新するにはどうすればよいですか? 私はこのように思った:条件付きでOpenStruct値を更新する方法
o = OpenStruct.new(a: 1, b: 2)
o.each_pair{|k,v| v = 3 if v.even? }
しかし、このコードは動作しません。
このコードで更新することはできますが、読みにくいです。条件によってOpenStruct
値を更新するためのより良い方法は
OpenStruct.new(o.each_pair.map{|k,v| [k, v.even? ? 3 : v] }.to_h)
ありますか?
'o.b.evenならo.b = 3? #=> 3; o#=>#; o.to_h#=> {:a => 1、:b => 3} '。 –