【发布时间】:2015-07-16 06:00:39
【问题描述】:
我有一个嵌套的哈希,比如说:
data = {
a: {
b: {
c: {
d: {
e: :f
}
}
}
}
}
另一个哈希:
update = {g: :h}
还有一条路径:
path = [:a, :b, :c, :d]
我想将path指定的data的子哈希替换为update,这样我最终得到:
data == {
a: {
b: {
c: {
d: {
g: :h
}
}
}
}
}
很容易导航到子哈希:
_data = data
path.each{|p| _data = data[p]}
但这不起作用,因为_data = update 改变了_data 所指的内容,并且实际上并没有改变data[:a][:b][:b][:d] 的值。
虽然我可以编写导致子哈希的表达式,但尝试分配它会导致语法错误:
> (path.inject(data){|_data, s| _data[s]}) = update
SyntaxError: unexpected '=', expecting end-of-input
有什么想法吗?
【问题讨论】: