我想知道是否可以创建动态数组,即具有代码的数组,具体取决于用户输入。如果用户输入3
,代码将创建三个数组。或者,如果用户输入5
,代码会创建五个数组。关于如何做到这一点的任何想法?
答案 0 :(得分:1)
print 'How many arrays? ' #=> suppose 5 is entered
arrays = Array.new(gets.to_i) { [] } #=> [[], [], [], [], [], []]
这将创建一个包含5个不同数组的数组。如果您希望每个都存储在一个单独的变量中,您可以使用Ruby允许您动态创建实例变量的事实:
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 :(得分:1)
def create_arrays(n)
array_collection = []
n.times {array_collection.push([])}
array_collection
end