-1

initialize获取 -即使我已经在初始化中声明了实例变量,也必须在内部声明实例变量。

typed: strict用来输入检查我的红宝石代码。我使用实例变量的实例方法之一@updated。冰糕抛出错误 - “使用未声明的变量”。我创建了一个初始化方法来声明它。然后“使用未声明的变量”替换为“必须在内部声明实例变量initialize

sig{returns(<<redacted>>)}
def initialize
  @updated = T.let(Time.now, Time)
  self
end

错误是 -

Instance variables must be declared inside `initialize` https://srb.help/5005
    39 |       @updated = T.let(Time.now, Time)

预期 - 不应该有任何错误,因为实例变量声明在def initialize

编辑:我在Sorbet Playground中复制了这个

# typed: strict
class A
  extend T::Sig

  sig {returns(Integer)}
  attr_accessor :x

  sig {params(y: Integer).void}
  def initiazlize(y)
    @x = y
  end

  sig{returns(Integer)}
  def simple_operation
    @x = 5
    @x
  end
end

# -- error
editor.rb:10: Instance variables must be declared inside `initialize` https://srb.help/5005
    10 |    @x = T.let(y, Integer)
            ^^
Errors: 1
4

1 回答 1

3

看来您可能打错了initialize方法名称。固定示例

于 2019-07-22T15:13:48.993 回答