为什么要对Sorbet进行类型检查同时需要sig和T.let?

时间:2019-08-09 23:12:56

标签: ruby sorbet

我将文件设置为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的类型吗?

1 个答案:

答案 0 :(得分:1)

这是冰糕中的一个已知限制:“ Why do I need to repeat types from the constructor?

TL; DR:

  

[Sorbet]无法重用静态类型知识来自动确定实例或类变量的类型。

#1666 Seemingly unnecessary type annotation of instance variables

中也有报道。