我正在尝试编写一个转置方法,但它对我来说并不合适。代码如下:
def my_transpose(array)
new_matrix= Array.new
v_entries= 0
h_entries= 0
while v_entries < array.length
while h_entries < array.length
new_matrix[h_entries] << ([array[h_entries][v_entries]])
h_entries +=1
end
v_entries +=1
h_entries= 0
end
new_matrix
end
array = [[1,2,3], [4,5,6], [7,8,9]]
我想让my_transpose(数组)给我:
[[1,4,7], [2,5,8], [3,6,9]]
我尝试添加
new_matrix[h_entries] << ([array[h_entries][v_entries]])
但是我收到了错误
“未定义的方法”&lt;&lt;&lt;为零:NilClass“
任何见解都会很棒。
答案 0 :(得分:6)
在您的第一个循环中,迭代new_matrix[h_entries]
将是nil
。因此,您无法使用<<
方法。
如果是nil
:
new_matrix[h_entries] ||= []
new_matrix[h_entries] << ([array[h_entries][v_entries]])