首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Sorbet为块编写类型签名?

如何使用Sorbet为块编写类型签名?
EN

Stack Overflow用户
提问于 2019-08-12 05:39:10
回答 1查看 342关注 0票数 1

我目前正在尝试向一些核心Rails方法添加类型,其中之一就是respond_to。它可以与块一起使用,如下所示:

代码语言:javascript
复制
respond_to do |format|
  format.html
  format.json { render json: @companies }
end

我遇到的问题是如何准确地输入它,因为the docs on T.proc是相当小的。format参数是ActionController::MimeResponds::Collector的一个实例。块不需要返回任何东西(例如,它不像Array#select那样计算块的值,而块返回一个布尔值)。

我想这就是你想要写签名的方式吧?

代码语言:javascript
复制
sig do
  params(
    mimes: T.nilable(Symbol),
    block: T.proc.params(arg0: ActionController::MimeResponds::Collector).void
  ).void
end
def respond_to(*mimes, &block); end

(我们现在可以忽略*mimes参数,这并不重要)

这看起来是可行的,但我只想确保我理解了T.proc的使用方式。

(请注意,这里有an issue with blocks that are nilable causing a regression to T.untyped,但这不是我目前感到困惑的地方)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-13 00:55:24

在我看来签名的用法是正确的。

顺便说一句,非常欢迎添加到文档中!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57453812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档