有没有办法知道当前在Ruby中运行的方法的名称?
修改
例如,我可以使用self
来获取当前的类。有没有办法让当前的方法运行?是否存在可以执行以下操作的“魔术方法”?
def method1
p "this method's name is " + magicmethod # => this method's name is method1
end
答案 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