如何在满足条件时更新OpenStruct的值?我是这样想的:
o = OpenStruct.new(a: 1, b: 2)
o.each_pair{|k,v| v = 3 if v.even? }但是这个代码不起作用。
我可以通过这段代码进行更新,但它很难读懂。
OpenStruct.new(o.each_pair.map{|k,v| [k, v.even? ? 3 : v] }.to_h)有没有更好的方法通过条件更新OpenStruct的值?
发布于 2016-08-07 11:50:27
更好,但仍然不是很清楚:
o.to_h.each { |k, v| o[k] = 3 if v.even? }编辑-更好的是:
o.each_pair { |k, v| o[k] = 3 if v.even? }我觉得这个挺不错的。您不能直接通过迭代器进行变异。
https://stackoverflow.com/questions/38810614
复制相似问题