Ruby 如何在使用sorbet的项目中包含可枚举项?
如果我定义一个可枚举类,比如Ruby 如何在使用sorbet的项目中包含可枚举项?,ruby,sorbet,Ruby,Sorbet,如果我定义一个可枚举类,比如 #键入:严格 类可数 扩展T::泛型 扩展T::Sig 包括可枚举的 Elem=类型_成员 sig{override.params(blk:T.proc.params(arg:Elem).returns(BasicObject)).returns(NilClass)} 每个def(&blk) 结束 结束 此类型使用srb tc检查很好,但是如果我尝试运行srb rbi update,我会得到一个错误。检查reflection.json.err reflection
#键入:严格
类可数
扩展T::泛型
扩展T::Sig
包括可枚举的
Elem=类型_成员
sig{override.params(blk:T.proc.params(arg:Elem).returns(BasicObject)).returns(NilClass)}
每个def(&blk)
结束
结束
此类型使用srb tc
检查很好,但是如果我尝试运行srb rbi update
,我会得到一个错误。检查reflection.json.err
reflection.rbi:15619: Type variable `Elem` needs to be declared as `= type_member(SOMETHING)` https://srb.help/5018
15619 | Elem = ::T.let(nil, ::T.untyped)
^^^^
将Elem
声明更改为(即如何定义)
Elem=type_成员(:out)
现在srb tc
给出了错误
Classes can only have invariant type members https://srb.help/5016
9 | Elem = type_member(:out)
^^^^^^^^^^^^^^^^^^^^^^^^
Errors: 1
Invalid variance kind, only :out and :in are supported https://srb.help/4011
9 | Elem = type_member(:invariant)
^^^^^^^^^^
Errors: 1
将Elem
声明更改为
Elem=type_成员(:不变量)
现在srb tc
给出了错误
Classes can only have invariant type members https://srb.help/5016
9 | Elem = type_member(:out)
^^^^^^^^^^^^^^^^^^^^^^^^
Errors: 1
Invalid variance kind, only :out and :in are supported https://srb.help/4011
9 | Elem = type_member(:invariant)
^^^^^^^^^^
Errors: 1
如何在使用sorbet的项目中实现一个
可枚举的
类,使其在运行srb rbi update
时既能进行类型检查又不会出错?这看起来像是sorbet中的一个bug。我不知道有什么解决办法。请将问题提交至。不幸的是,我们的资源有限,因此必须决定如何优先处理此问题。完成。供参考: