かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

配列の値が壊れる!?

今日,研究で膨大なCSVを処理しなくてはいけないので,
それを処理するためのプログラムをRubyで書いていました.
そこでハマったことを自分のメモがわりに書いておきます.

配列のコピーに関することです.

tmpRow=@rows[2]

として配列をコピーして,このtmpRowと@rowsのすべての行を
引き算しました,途中で値が壊れ,計算出来ない!
ってことがわかりました.なんでだろー?と思いよくよく調べてみると
単純なことで,参照コピーなので,コピー元に変更が加われば
値が壊れるという単純なことでした,,,
んで下記の用に書き直して,オブジェクトコピーにして問題解決です.

tmpRow=Marshal.load(Marshal.dump(@rows[2]))

なんか基本的なことで引っかかってたなー・・・
MacでVimを使って書いていたので,デバッガの使い方がよくわからず無駄に時間をくってしまいました...
まぁこれも経験だということにして,,明日からもまた頑張ります