5

Sorbet 显示 attr_reader 错误,但如果我错了,请纠正我,声明函数时需要 sigs,而不是调用函数,对吧?

我试过浏览文档,但我得到的只是这个注释

注意:许多看起来像局部变量的 Ruby 结构实际上是没有括号的方法调用!具体来说,注意 attr_reader 和零参数方法定义。

app/util/hodor.rb:125: This function does not have a `sig` https://sorbet.org/docs/error-reference#7017
     125 |  attr_reader(:collection_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4

2 回答 2

6

attr_reader该错误与需要 a 的方法本身无关sig,但与:collection_name. 的签名attr_reader是已知的,但它动态创建的新方法#collection_name没有 known sig,并且 Sorbet 期望这是你给它的地方。

你可以这样做来修复它:

sig { returns(String) }
attr_reader(:collection_name)
于 2019-06-20T15:16:08.690 回答
0

attr_reader(attribute)相当于:

def attribute
  @attribute
end

这可能就是冰糕要求签名的原因。

于 2019-06-19T12:54:05.863 回答