0
说我有这种红宝石方法:我可以在Ruby中对一个(简单)块进行字符串化吗?
def get_proc_from_block(&block)
return block
end
现在,如果我有这样的块称之为:
p = get_proc_from_block(&:length)
...有没有什么办法让我莫名其妙地检查p
并获得字符串"length"
从它?
说我有这种红宝石方法:我可以在Ruby中对一个(简单)块进行字符串化吗?
def get_proc_from_block(&block)
return block
end
现在,如果我有这样的块称之为:
p = get_proc_from_block(&:length)
...有没有什么办法让我莫名其妙地检查p
并获得字符串"length"
从它?
以下每个表达式导致相同的常规PROC:
get_proc_from_block(&:length)
:length.to_proc
proc{ |a| a.length }
和Ruby不支持检查他们的源代码。如需更详细的答案,看看这些问题:
首先,除非你的函数是一个类,变量“B”的一部分,将尽快为您留下销毁第二,在运行时无法获得方法的长度,因为解释器会将您的代码转换为解释器可以理解的机器代码之类的东西。获取该方法中字符数的唯一方法是解析包含它的源文件。 – 2013-02-28 19:37:15
@IonutHulub:我意识到'b'只能在'store_block'范围内访问;我的意思是询问是否可以在方法中检查它(我会更新问题来澄清)。但是,由于Ruby的动态性,我对你的第二个要求持怀疑态度。例如,我可以创建一个新的类并在其上定义一个“长度”方法,然后在该类的一个实例上调用该块,它将起作用。但也许你理解这种方式比我更好(在这种情况下,更深入的答案将非常感谢!)。 – 2013-02-28 19:54:08