IT技術
PR

配列の値が壊れる!?

kawa.xxx
記事内に商品プロモーションを含む場合があります

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

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

tmpRow=@rows[2]

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

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

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

ABOUT ME
kawa.xxx
都内のIT系企業に勤める会社員。自分の備忘録的なアウトプット用の場所で、ボルダリングやガシェッド、セキュリティ、カメラの話題が中心です。
記事URLをコピーしました