标签: ruby metaprogramming
在Ruby中,有没有办法确定方法的名称,类似于“class”方法如何返回对象的类型?
例如:
def example_method puts method_name end #=> "example_method"
答案 0 :(得分:3)
从here:
module Kernel private def current_method_name caller[0] =~ /`([^']*)'/ and $1 end end class Foo def test_method current_method_name # "test_method" end end
这适用于旧版本的Ruby(< 1.9)。对于较新版本,请参阅Ben强调的其他StackOverflow答案 here 。