【发布时间】:2011-06-16 13:24:13
【问题描述】:
我最近尝试做类似的事情:
a = "some string"
b = Proc.new{ upcase }
a.instance_eval b
这给出了错误:
TypeError: 无法将 Proc 转换为 String
但这有效:
def b(&block)
"some string".instance_eval &block
end
b{ upcase }
使用此方法进一步了解:
def b(&block)
"some string".instance_eval block
end
产生相同的Proc to String 错误。
所以...我对块的理解是它们只是触发。但显然有这个 & & 符号有一些特别之处......
谁能给我解释一下?是否可以将普通的 proc 转换为这个 &block 对象的特殊之处?
编辑
刚刚解决了我的第二个问题,在 proc 前加上 &... 这很简单,但这到底是在做什么?
【问题讨论】:
标签: ruby block lambda proc-object