2016-07-28 56 views
2
1.upto(3) do |n| 
    arr"#{n}" = Array.new 
end 

我的目标是最终得到3个像这样命名的空数组。Ruby迭代器upto方法编号数组

arr1 = [] 
arr2 = [] 
arr3 = [] 

如何让此代码有效?

+0

你为什么不使用二维数组或哈希值为'n'作为关键? – guitarman

+0

@guitarman 即时通讯太多的小白了解你刚刚说的 – iswg

回答

4

您正试图动态创建局部变量。这是一个坏主意,也不容易拉不上。

正如有人已经建议,使用数据结构进行存储。您有效地创建阵列,那么为什么不用于存储它使用数组:

arr = [] 
1.upto(3) do |n| 
    arr << Array.new 
end 

,或者,如果您需要保留自定义索引,散列:

arr = {} 
1.upto(3) do |n| 
    arr[n] = Array.new 
end 
+2

“也不容易拔下来”应该被认为是“不可能的”。还有一个'Binding#local_variable_set',它并不完全是可能的被建议,并且无法将局部变量从一个上下文传播到另一个上下文。 – mudasobwa

+0

为了记录,可以在Ruby v1.8(使用g'eval')中创建局部变量,但不能在以后的版本中创建。 –