2015-10-25 44 views
2

是参数的I型具有这样的代码:为什么对象不能为PROC对象

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

,当我编译它我收到这样的例外:

不能被用作一个Proc参数类型,但使用更具体的类型

有人可以解释我为什么这是,为什么Proc无法通过对象参数化?

回答

2

它说“还没有”。这将可能在未来支持;-)

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

相关问题