【问题标题】:Get the function name from it's body in Ruby [duplicate]从Ruby中的主体获取函数名称[重复]
【发布时间】:2014-04-09 04:09:39
【问题描述】:

假设我有一个函数:

def foo()
puts getFunctionIAMIn()
end

我希望输出为:“foo” 如果我有这个代码:

def foo1()
puts getFunctionIAMIn()
end

我希望输出为:“foo1”

【问题讨论】:

  • 问题,换一种说法,我如何实现 getFunctionIAMIn() ?

标签: ruby function


【解决方案1】:

使用__method__写如下:

def foo()
  puts __method__
end

以上是正确的,但__callee__ 在技术上听起来更正确。

__method__ 返回定义的名称,__callee__ 返回被调用的名称。They are same usually, but different in a aliased method.

def foo
  [__method__, __callee__]
end

alias bar foo
p foo #=> [:foo, :foo]
p bar #=> [:foo, :bar]

【讨论】:

  • 你比我快 8 秒 :D
  • 你知道它和__callee__有什么不同吗?
  • @Stefan 不,他们不是...... :)
  • @ArupRakshit 谢谢,这是你自己的问题。
【解决方案2】:

您可以为此使用__method__

def test_method
  __method__
end

【讨论】:

  • 你的答案是否和我的不同?
猜你喜欢
  • 2017-09-12
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
相关资源
最近更新 更多