1.upto(3) do |n|
arr"#{n}" = Array.new
end
我的目标是最终得到3个像这样命名的空数组。Ruby迭代器upto方法编号数组
arr1 = []
arr2 = []
arr3 = []
如何让此代码有效?
1.upto(3) do |n|
arr"#{n}" = Array.new
end
我的目标是最终得到3个像这样命名的空数组。Ruby迭代器upto方法编号数组
arr1 = []
arr2 = []
arr3 = []
如何让此代码有效?
您正试图动态创建局部变量。这是一个坏主意,也不容易拉不上。
正如有人已经建议,使用数据结构进行存储。您有效地创建阵列,那么为什么不用于存储它使用数组:
arr = []
1.upto(3) do |n|
arr << Array.new
end
,或者,如果您需要保留自定义索引,散列:
arr = {}
1.upto(3) do |n|
arr[n] = Array.new
end
“也不容易拔下来”应该被认为是“不可能的”。还有一个'Binding#local_variable_set',它并不完全是可能的被建议,并且无法将局部变量从一个上下文传播到另一个上下文。 – mudasobwa
为了记录,可以在Ruby v1.8(使用g'eval')中创建局部变量,但不能在以后的版本中创建。 –
你为什么不使用二维数组或哈希值为'n'作为关键? – guitarman
@guitarman 即时通讯太多的小白了解你刚刚说的 – iswg