Я пытаюсь написать свой собственный метод транспонирования. Мне интересно, как различные формы конкатенации влияют на мой код.Разница между типами конкатенаций в ruby
multi = [[1,3,5],[2,4,6],[7,9,8]]
new = Array.new(multi.length, [])
multi.each do |c|
c.each_with_index do |x,y|
new[y] += [x]
end
end
new #=> [[1, 3, 5], [2, 4, 6], [7, 9, 8]]
multi = [[1,3,5],[2,4,6],[7,9,8]]
new = Array.new(multi.length, [])
multi.each do |c|
c.each_with_index do |x,y|
new[y] << x
end
end
new #=> [[1, 3, 5, 2, 4, 6, 7, 9, 8], [1, 3, 5, 2, 4, 6, 7, 9, 8], [1, 3, 5, 2, 4, 6, 7, 9, 8]]
Почему они не работают в одинаковой манере?
Фактически, оба не работают в качестве транспонирования. Первый выглядит так, потому что вы используете специальный пример, который имеет такое же количество строк и столбцов. – sawa
<< это будет работать как добавочное средство new [0] << 1 then new [0] << 3 then new [0] << 5 .... так что 'new [0] = [1, 3, 5, 2, 4, 6, 7, 9, 8]. ... то же самое –