我最近尝试做类似的事情:
a = "some string"
b = Proc.new{ upcase }
a.instance_eval b
这给出了错误:
TypeError:无法将 Proc 转换为字符串
但这有效:
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 前面加上一个……这很容易,但这到底在做什么?