【发布时间】:2013-04-01 22:17:16
【问题描述】:
我正在开发一个应用程序,我想修改现有哈希的一部分,如下所示:
{a: {b: {c: 23}}}
成为:
{a: {b: {c: [23]}}}
但是,要设置的确切密钥是动态的,并且在散列中处于未知深度。有没有办法在给定键数组的哈希中设置一个值?我希望是这样的:
my_hash['a','b','c'] = new_value
通过递归从任意深度获取值很简单,但由于遍历适用于数据的副本,而不是引用,因此我不知道如何设置值而不在遍历期间重建整个数组。
【问题讨论】:
-
问题:1) 递归/遍历是否出于任何原因必须处理数据副本? 2)在代码中,当您遍历副本时,您是否有对原始数据结构的引用(例如,它是否存储在范围内的变量中)?
-
1) 它不必在副本上工作。 2) 对原始结构的引用可用最终目标是为我的应用程序修补 Hash,以便我可以调用 my_hash['a','b','c'] 或 my_hash.set_value_at['a',' b','c'].
-
你不能那样做。输入和预期输出均无效。
-
{a: {b: {c: {23}}}}语法不正确 -
抱歉,问题语法已更正。
标签: ruby