Ruby初心者スレッドPart6
■ このスレッドは過去ログ倉庫に格納されています
0232227
2006/05/30(火) 23:00:23後からその self の履歴をさかのぼって参照する、というものです。
$STACK = []
class A
def initialize
$STACK.push(self)
@b = B.new
$STACK.pop
end
end
class B
def initialize
$STACK.push(self)
@owner = $STACK[-2]
$STACK.pop
end
end
a = A.new
p(a.b.owner)
これは >>227 と似たようなことをやろうとしているもの。
上記でいちいち push して pop しているところ、
組み込みメソッドの set_trace_func を使うことで、
その push pop を一カ所にまとめて書いています。
set_trace_func の詳細はリファレンスマニュアルを読んでください。
set_trace_func以外は特に難しいことはしていないつもりだけどどうかな。
■ このスレッドは過去ログ倉庫に格納されています