【发布时间】:2022-01-22 12:00:03
【问题描述】:
在 Ruby 中,使用 1D Array,我可以通过在括号中传递 Integer 键来动态选择元素,如下所示:
example = [0,1,2,[3,4]]
i = 2
example[i]
==> 2
我想要实现的是通过传递Array 的Integers 来动态更新多维Array 中的元素,每个元素代表要在每个数组中选择的索引。我想要实现的示例:
example = [0,1,2,[3,4]]
path = [3, 1] (corresponds to the 4)
example[*path or some other syntax] = 9
example
==> [0,1,2,[3,9]]
我尝试的是存储每次路径迭代的结果:
temp = example
path.each {|index|
temp = temp[index]
}
temp
==> 4
这成功识别了我要更新的元素。但是,它似乎存储了一个副本,而不是引用原始位置,如:
temp = 9
example
==> [0,1,2,[3,4]]
如何更新基本数组 example 而无需在单独的括号中硬编码 path?
评论后澄清:我事先不知道path 的长度,这就是硬编码不可行的原因。
【问题讨论】:
-
example[3][1] = 9还不够吗? -
不,因为我希望能够容纳多个
path长度。带括号的硬编码将我限制为两步path。 -
写一个方法。传入数组对象,然后是索引。您必须使您的方法能够接受任意数量的索引。