呼んだのは誰?
Posted feedbacks - Lua
tail call optimizationをやるのでわざとstring.formatを呼んでみる。
1 2 3 4 5 6 7 8 9 10 11 12 | function foo()
return string.gsub(debug.traceback(), "^.+\n.+\n.+`(.+)'.+$", "%1")
end
function bar()
return string.format("%s",foo())
end
function baz()
return string.format("%s",foo())
end
print(bar())
print(baz())
|
ちゃんとテーブルの形で情報もらえるので文字列から抽出する必要はないかと
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function foo() return debug.getinfo(2).name end
function bar()
local ret = foo()
return ret
end
function baz()
local ret = foo()
return ret
end
print(bar())
print(baz())
|





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