2016-05-05 19 views
0

転置メソッドを作成しようとしていますが、それは私にとってはうまくいきません。コードは以下の通りです:定義されていないメソッド<< NilClassの場合

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]]) 

を追加しようとしたが、私はエラー

を取得します

"未定義メソッド" < <の場合は0:NilClass "

洞察力はすばらしいでしょう。

答えて

5

最初のループ反復でnew_matrix[h_entries]nilとなります。したがって、<<メソッドを使用することはできません。

は、それがnilある場合は、空の配列にそれを初期化するために試してみてください。

new_matrix[h_entries] ||= [] 
new_matrix[h_entries] << ([array[h_entries][v_entries]])