2

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

编辑

例如我可以self用来获取当前类。有没有办法获取当前正在运行的方法?有没有一种“神奇的方法”可以做到以下几点?

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

2 回答 2

9

__method__

class Test
  def testing
    __method__
  end
end

注意__method__是 aSymbol而不是 aString

这至少需要 Ruby 1.8.7。

于 2013-03-19T12:09:16.780 回答
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
于 2013-03-19T12:31:25.410 回答