【发布时间】:2022-01-27 13:58:02
【问题描述】:
我正在尝试将冰糕类型信息添加到我的 gem pdf 阅读器中。我不希望 sorbet 成为 gem 的运行时依赖项,因此所有类型注释都在 rbi/ 目录中的外部文件中。我也不能在我的课程中扩展T::Sig。
我想在某些文件中启用typed: strict,但这样做表明我正在使用一些没有类型注释的实例变量:
./lib/pdf/reader/rectangle.rb:94: Use of undeclared variable @bottom_left https://srb.help/6002
94 | @bottom_left = PDF::Reader::Point.new(
^^^^^^^^^^^^
./lib/pdf/reader/rectangle.rb:98: Use of undeclared variable @bottom_right https://srb.help/6002
98 | @bottom_right = PDF::Reader::Point.new(
^^^^^^^^^^^^^
./lib/pdf/reader/rectangle.rb:102: Use of undeclared variable @top_left https://srb.help/6002
102 | @top_left = PDF::Reader::Point.new(
^^^^^^^^^
./lib/pdf/reader/rectangle.rb:106: Use of undeclared variable @top_right https://srb.help/6002
106 | @top_right = PDF::Reader::Point.new(
建议的修复方法是使用T.let():
@top_right = T.let(PDF::Reader::Point.new(0,0), PDF::Reader::Point)
但是我不能这样做,因为它需要对 sorbet 的运行时依赖。
是否可以在 rbi 文件中记录实例变量的注释?
【问题讨论】: