呼んだのは誰?
Posted feedbacks - Ruby
callerの使い方をよくわかってませんが。
1 2 3 4 5 6 7 8 9 10 | def foo
/.*`(.+)'/ =~ caller(1)[0]
$1
end
def bar; foo; end
def baz; foo; end
p bar
p baz
|
1 2 3 4 5 6 7 8 | def foo
caller(1)[0][ /in `(.+)'$/, 1 ]
end
def bar() foo end
def baz() foo end
bar # => "bar"
baz # => "baz"
|


にしお
#3384()
Rating1/1=1.00
Ruby で表現すると、 以下のような「fooという関数を呼び出す関数」#bar、#bazがあるとき
このbar, bazの返り値が以下のようになるような関数fooを定義してください。このお題は匿名の「Smalltalk からの挑戦状」を元に作成しました。 確かにこの手のリフレクションの機能が言語によってどう違うのかは興味深いところです。 リフレクションを使う問題をいくつか考えてみたいと思います。 ご投稿ありがとうございました。
[ reply ]