Ruby方法可以知道它的名字吗?

时间:2013-03-19 12:06:19

标签: ruby

有没有办法知道当前在Ruby中运行的方法的名称?

修改

例如,我可以使用self来获取当前的类。有没有办法让当前的方法运行?是否存在可以执行以下操作的“魔术方法”?

def method1
    p "this method's name is " + magicmethod # => this method's name is method1
end

2 个答案:

答案 0 :(得分:9)

__method__

class Test
  def testing
    __method__
  end
end

请注意,__method__Symbol而不是String

这至少需要Ruby 1.8.7。

答案 1 :(得分:1)

如何::))

p RUBY_VERSION

module Kernel
private
    def method_name
      caller[0] =~ /`([^']*)'/ and $1
    end
end

class Foo
  def test_method
    method_name
  end
end

puts Foo.new.test_method 

输出:

"1.9.3"
test_method