ruby - 冰糕要求 `sig` `attr_reader`

标签 ruby sorbet

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)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

最佳答案

该错误与attr_reader 方法本身需要sig 无关,而与:collection_name 有关。 attr_reader 的签名是已知的,但它动态创建的新方法 #collection_name 没有已知的 sig,而 Sorbet 期待这一点成为你给它的地方。

你可以这样做来修复它:

sig { returns(String) }
attr_reader(:collection_name)

关于ruby - 冰糕要求 `sig` `attr_reader`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56667291/

相关文章:

ruby - 如何消除冰糕错误的 "Did you mean ...?"建议?

java - Java 和 Ruby 之间的正则表达式差异

ruby-on-rails - Rails 还是 Grails?

ruby - 如何从混合模块调用 `self.class`?

ruby-on-rails - Sorbet 找不到 `has_many` 关联方法

c++ - 如何在 Centos 7 上构建 Sorbet(缺少 llvm 工具链)

ruby - 使用 Selenium 和 Ruby 将键盘快捷键发送到 chrome

ruby - 除了中间和开头的小单词外,如何将字符串中的所有单词大写?

ruby-on-rails - 英雄库 : run rake db:migrate error