2014-11-04 2 views
2

Мне было интересно, можно ли создавать динамические массивы, т. Е. Массивы с кодом в зависимости от пользовательского ввода. Если пользователь вводит 3, код создает три массива. Или, если пользователь вводит 5, код создает пять массивов. Любые идеи о том, как я могу это сделать?Создание массивов по коду

+0

Вы хотите, чтобы эти массивы создавались в двойном массиве или отдельно? – daremkd

+0

Отдельно, поэтому я могу ссылаться на них позже. –

+0

Вы можете ссылаться на один массив в двойном массиве с помощью double_array [0], double_array [1] и т. Д. – daremkd

ответ

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 
Смежные вопросы