我目前正在尝试向一些核心 Rails 方法添加类型,其中之一是respond_to
. 它可以与块一起使用,如下所示:
respond_to do |format|
format.html
format.json { render json: @companies }
end
我遇到的问题是如何准确输入,因为文档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
应该使用的方式。
(请注意,可空的块存在导致回归的问题T.untyped
,但这不是我目前所困惑的)