我目前正在尝试将类型添加到一些核心的Rails方法中,其中之一是respond_to
。它可以与块一起使用,如下所示:
respond_to do |format|
format.html
format.json { render json: @companies }
end
我遇到的问题是如何准确键入此字符,因为the docs on T.proc
很小。 format
参数是ActionController::MimeResponds::Collector
的实例。不需要该块返回任何内容(例如,它不像Array#select
那样计算该块,而该块返回一个布尔值)。
我认为这是您要编写签名的方式吗?:
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
,但这不是我目前感到困惑的地方)
答案 0 :(得分:1)
似乎对我来说正确使用了签名。
顺便说一句,超级欢迎添加文档!