紅玉賢者っぽいことをしてきました

最近はスクラッチから書く場合はC(主に授業)、既存のものをいじる場合はPerl(主に賢竜関係)だったんですが久しぶりにRuby使ってみました。おい。

メモ

a = Array.new(4,Array.new(2,0))
b = [[1,"a"],[2,"b"],[3,"c"],[4,"d"]]

でbをaにコピーしようとするとき

q = 0
b.each do |line|
  a[q][0],a[q][1] = line[0],line[1]
  q += 1
end

とやったときと、

q = 0
b.each do |line|
  a[q] = line
  q += 1
end

とやったときではaの中身が変わってくる。
後者は正しくコピーされるが、前者は最後の値(4,"d")だけに置き換わってしまう。一見問題なさそうに見えるけどどこがまずいんだろう…?
こういう状況では次回からは「下の方法でやる」としておくが…


ちなみにどんな状況でRuby使うことになったかは秘密。PHPでわざわざ出力のHTML書いてブラウザから走らせるってのが煩わしかっただけともいいますが。w

追記

ただ配列をコピーするだけならArray#dupもしくはArray#cloneで大丈夫です