金谷です。
以下のソースコードで、ちょっとどうしても分からない部分があります。
それぞれの要素にあるデータを加工させるのですが、
元のデータは取っておきたいので、複製を作成させて
複製したものを加工する動作を行わせていたのですが、
それでも加工元(イテレータのブロック変数 eachgraph)にも
影響が行ってしまいます。
p で見てみると、オリジナルのデータと複製のデータが同じなんです。
Ruby経験がまだ浅いのと、イレテータを使うのは初めてなので
勘違いがあるかも知れませんが、誰かご教授お願いします。
-----------------------
def evaluate
@geneTable.collect! do |eachgraph|
p eachgraph #<=加工前。まだ問題なし
lgraph = eachgraph.dup #<=元データ内容を保持したい予定なので複製
#複製したものをいろいろ加工
lgraph.vertex.each do |eachvtx| #for all coverable vertex
if eachvtx.cover then #if this vertex is coverable
eachvtx.linked.each do |eachlink|
lgraph.vertex[eachlink].removelink(eachvtx.graphID)
end
end
end
p eachgraph #<=加工後、eachgraphとlgraphのデータが同じになる
p lgraph #eachgraphと同じ内容
-----------------------
----------------------
Atsushi Kanaya
Toyohashi Univercity of Technology
Dept. of Information and Computer Sciences
mailto:kanaya / ss.ics.tut.ac.jp