我将文件设置为typed: strict
,并将我的initialize
方法设置为采用浮点数组,但是srb tc
报告我必须在其中使用T.let
断言方法的主体:
# typed: strict
class Point
extend T::Sig
sig { params(c: T::Array[Float]).returns(t::Array[Float]) }
def initialize(c)
@c = c
end
end
Sorbet不能从签名中推断出@c
的类型吗?
答案 0 :(得分:1)
这是冰糕中的一个已知限制:“ Why do I need to repeat types from the constructor?”
TL; DR:
[Sorbet]无法重用静态类型知识来自动确定实例或类变量的类型。
在#1666 Seemingly unnecessary type annotation of instance variables
中也有报道。