除了将参数与绑定一起传递之外,还有什么方法可以改变块/方法中传递的对象以使更改反映在初始对象中?
想象一下,要求是转换以下内容:
{one:1, two:2, three:3, four:4}
进入{one:"1", two:"22", three:"333", four:"4444"}
我在想这样的事情:
{one:1, two:2, three:3, four:4}.each!{ |k,v| v = v.to_s * v }
对传递变量的更改会反映在实际哈希中。
我认为拥有这样的能力可能更有效?这样块就可以直接操纵这些对象,而不必创建新对象然后将其分配给它。
不知何故,解决这样的问题涉及对象数据类型的多次不必要的更改,并且可能效率低下:
new_hash = Hash[{one:1, two:2, three:3, four:4}.collect{ |k,v| [k, v.to_s * v] }]
所以想知道,是否有类似的东西!去做吧。