为什么对象不能成为 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 ,或者更实际地说,自动装箱和拆箱值类型。这种最新的方法可能会在未来版本的编译器中实现。
我有这样的代码:
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 ,或者更实际地说,自动装箱和拆箱值类型。这种最新的方法可能会在未来版本的编译器中实现。