【发布时间】:2013-02-28 19:32:08
【问题描述】:
假设我有这个 Ruby 方法:
def get_proc_from_block(&block)
return block
end
现在,如果我用这样的块调用它:
p = get_proc_from_block(&:length)
...我有什么办法可以检查p 并从中获取字符串"length"?
【问题讨论】:
-
首先,除非你的函数是类的一部分,否则变量'b'一离开函数就会被销毁,其次,没有办法获取方法的长度在运行时,因为解释器会将您的代码转换为该解释器可以理解的机器代码。在该方法中获取字符数的唯一方法是解析包含它的源文件。
-
@IonutHulub:我意识到
b只能在store_block的范围内访问;我的意思是问是否可以从方法中检查它(我将更新问题以澄清)。但是,由于 Ruby 的动态特性,我对您的第二个说法持怀疑态度。例如,我可以创建一个新类并在其上定义一个length方法,然后在该类的实例上调用该块,它就可以工作了。但也许您比我更了解这种工作方式(在这种情况下,非常感谢您提供更深入的答案!)。