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

Why Object can't be type of argument for Proc object

我有这样的代码:

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

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

cannot be used as a Proc argument type yet, use a more specific type

谁能解释一下这是为什么,为什么 Proc 不能被 Object 参数化?

它说 "yet"。将来可能会支持 ;-)

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