未定义的方法<<对于NilClass

时间:2016-05-05 21:36:28

标签: arrays ruby

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

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“

任何见解都会很棒。

1 个答案:

答案 0 :(得分:6)

在您的第一个循环中,迭代new_matrix[h_entries]将是nil。因此,您无法使用<<方法。

如果是nil

,请尝试将其初始化为空数组
new_matrix[h_entries] ||= []
new_matrix[h_entries] << ([array[h_entries][v_entries]])