未定义的方法<< for NilClass

0 ruby arrays

我正在尝试编写一个转置方法,但它对我来说并不合适.代码如下:

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]]
Run Code Online (Sandbox Code Playgroud)

我想让my_transpose(数组)给我:

[[1,4,7], [2,5,8], [3,6,9]]
Run Code Online (Sandbox Code Playgroud)

我尝试添加

new_matrix[h_entries] << ([array[h_entries][v_entries]]) 
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误

"未定义的方法`<<'为nil:NilClass"

任何见解都会很棒.

Uzb*_*jon 6

在你的第一个循环迭代new_matrix[h_entries]nil.所以,你不能使用<<它的方法.

尝试将其初始化为空数组,如果是nil:

new_matrix[h_entries] ||= []
new_matrix[h_entries] << ([array[h_entries][v_entries]])
Run Code Online (Sandbox Code Playgroud)