Извините, я не знаю java, но взгляните на класс meth ods Array#new и Array::[], а также методы экземпляра Array#[]= и Array#[]. Вот некоторые примеры, которые должны ответить на ваш вопрос (и другие вопросы, которые могут быть спровоцированные, надеюсь):
Array.new #=> []
[] #=> [] # shorthand for above
a = Array.new(5) { [] } #=> [[], [], [], [], []]
a[0][0] = 2
a #=> [[2], [], [], [], []]
a[3][2] = 4
a #=> [[2], [], [], [nil, nil, 4], []]
a[1] << 1
a #=> [[2], [1], [], [nil, nil, 4], []]
a[1] << 2
a #=> [[2], [1, 2], [], [nil, nil, 4], []]
a[1] << 3 << 4
a #=> [[2], [1, 2, 3, 4], [], [nil, nil, 4], []]
a[2] << [4,5]
a #=> [[2], [1, 2, 3, 4], [[4, 5]], [nil, nil, 4], []]
a[4].concat([4,5])
a #=> [[2], [1, 2, 3, 4], [[4, 5]], [nil, nil, 4], [4, 5]]
a = Array.new(3) { Array.new(3) }
#=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
a[1][2] = 4
a #=> [[nil, nil, nil], [nil, nil, 4], [nil, nil, nil]]
Мы могли бы также написать по умолчанию в качестве второго аргумента:
a = Array.new(3,[]) #=> [[], [], []]
но это может быть проблематичным:
a[0][0] = 'cat'
a #=> [["cat"], ["cat"], ["cat"]]
как:
a = Array.new(3,Array.new(2)) #=> [[], [], []]
#=> [[nil, nil], [nil, nil], [nil, nil]]
a[0][0] = 'cat'
a #=> [["cat", nil], ["cat", nil], ["cat", nil]]
Поскольку каждый элемент a
представляет собой тот же массив.
Обратите внимание, что Ruby обеспечивает удобство для записи определенных методов, которые обычно называются «syntactic sugar». Если, например, вы пишете a = [1,2,3]
, Ruby будет интерпретировать это как a = Array.[](1,2,3)
(и вы могли бы написать его таким образом), метод класса - Array::[]. Аналогичным образом, если a
равно [1,2,3]
, a[1] = 'cat'
декодируется как a.[]=(1, 'cat')
и a[1] #=> 'cat'
- a.[](1)
. Аналогично, h = {}
переводит на h = Hash.new
и так далее.
Обратите внимание, что Ruby не имеет понятия «многомерные массивы». Для получения дополнительной информации вы можете увидеть комментарий слева на this question.
Пожалуйста, прочтите http://stackoverflow.com/help/how-to-ask и создайте [MCVE] (http://stackoverflow.com/help/mcve), а затем спросите. Люди здесь пытаются помочь вам. Самое меньшее, что вы могли бы сделать, это форматировать вопрос, чтобы его было более читаемым. Зачем вам нужен тег java? – StackFlowed
Вы можете улучшить свой вопрос, удалив ссылку на Java. Просто спросите, например, как вы можете создать массив 'arr', который позволяет' arr [row] [col] = 3' установить значение и 'arr [row] [col]', чтобы вернуть значение. –