2

我有这样的代码:

p = ->(x : Object) { x }
puts p.call(3)

当我编译它时,我收到这样的异常:

还不能用作 Proc 参数类型,请使用更具体的类型

有人可以解释一下为什么会这样,为什么 Proc 不能被 Object 参数化?

4

1 回答 1

2

它说“还”。将来可能会支持它;-)

主要原因是这Object意味着任何东西,包括按值传递的对象,具有不同的大小。这意味着编译器必须为任何类型分配足够的空间,或者更确切地说,自动装箱和拆箱值类型。这种最新的方法可能会在编译器的未来版本中实现。

于 2015-10-25T19:33:56.227 回答