获取参数作为字符串文字传递给函数?

时间:2018-02-04 02:53:41

标签: ruby-on-rails ruby metaprogramming

Ruby是否提供了获取作为字符串文字传递给函数的参数的任何方法?

换句话说,如果我有以下功能......

def my_func(arg)
   ...
end

我调用my_func(obj.prop),我希望能够从 my_func ...

"obj.prop"

我知道Ruby可以通过元编程来做一些非常时髦的事情,但我还没有找到一种能够做到这一点的方法。

1 个答案:

答案 0 :(得分:0)

这是不可能的。

  1. Ruby是一种严格的语言,这意味着在传递之前,参数会被评估。 IOW,即使在方法开始执行之前,有关参数生成方式的所有信息都会丢失。

  2. 无法访问特定方法,表达式或任何其他代码段的Ruby源代码。实际上,由于所有Ruby实现都很容易与其他语言集成(YARV,mruby和Rubinius中的本机扩展和FFI,JRuby中的任何JVM语言,Opal中的ECMAScript,IronRuby中的任何CLI语言,本机扩展和Smalltalk in MagLev,等等,甚至可能没有特定代码片段的Ruby源代码。

  3. 您想获取字符串文字。文字是语言语法的一部分,它们甚至不存在于运行时。它们不仅不存在于运行时,而且还是的想法"运行时"和"字面"从根本上说是不相容的。您的要求不仅是不可能的,而且是非感性的。没有可能的语言,甚至没有假设的语言,没有可能的世界,你的问题甚至可以使有意义,更不用说上班了。