如何动态确定Ruby中的方法名称

时间:2009-04-08 04:49:12

标签: ruby metaprogramming

在Ruby中,有没有办法确定方法的名称,类似于“class”方法如何返回对象的类型?

例如:

def example_method
  puts method_name
end

#=> "example_method"

1 个答案:

答案 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