2014-11-04 103 views
2

我想知道是否可以創建動態數組,即具有取決於用戶輸入的代碼的數組。如果用戶輸入3,則代碼將創建三個數組。或者如果用戶輸入5,代碼將創建五個數組。關於如何做到這一點的任何想法?通過代碼創建數組

+0

你想要這些數組創建在一個雙數組或單獨? – daremkd 2014-11-04 16:24:40

+0

另外,我可以在以後單獨引用它們。 – 2014-11-04 17:31:59

+0

您可以使用double_array [0],double_array [1]等引用double數組中的單個數組 – daremkd 2014-11-04 17:37:20

回答

1
print 'How many arrays? ' #=> suppose 5 is entered 
arrays = Array.new(gets.to_i) { [] } #=> [[], [], [], [], [], []] 

這將創建一個擁有5個不同數組的數組。如果你想每一個都被存儲在一個單獨的變量,你可以使用一個事實,即紅寶石允許你動態地創建實例變量:

print 'How many arrays? ' 
number = gets.to_i 
number.times.each do |i| # if number is 5, i will be 0,1,2,3,4 
    instance_variable_set(:"@array_#{i}", Array.new) 
end 

p @array_0, @array_1, @array_2, @array_3, @array_4 

假設我們進入3這裏是第3個實例變量(array_0通過array_3)將打印[],而最後2將打印nil(因爲他們缺乏價值)。

1
def create_arrays(n) 
    array_collection = [] 
    n.times {array_collection.push([])} 
    array_collection 
end