为什么Object不能是Proc对象的参数类型

我有这样的代码:

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

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

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

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

回答(1)

2 years ago

它说“尚未” . 这可能会在将来得到支持;-)

主要原因是 Object 表示任何内容,包括按值传递的对象,大小不同 . 这意味着编译器必须为任何类型或更自由的box和unbox值类型分配足够的空间 . 这种最新方法可能在未来版本的编译器中实现 .