是否可以在闭包中使用可变参数?

Is it possible to use Variadic Parameters within Closures?

翻新问题

Swift:结合使用可变参数和闭包


是否可以使用可变参数进行闭包?

func this(_ hello: (Int...) -> ()) {}
func that(_ yeah: Int...) {}

这是有效的:this(that)
这是不起作用的: this { foo in }this { _ in }this { }


我收到此错误:
Cannot convert value of type '(_) -> ()' to expected argument type '(Int...) -> ()'


我什至把Int...都改成了Void...
我得到了相同的结果
附加警告 When calling this function in Swift 4 or later, you must pass a '()' tuple; did you mean for the input type to be '()'? Replace '(Void...)' with '()' 然而,将 Void... 替换为 ()... 就成功了


简化问题


let _: (()...) -> () = { _ in }

导致此错误:
Cannot convert value of type '(_) -> ()' to specified type '(()...) -> ()'
是否可以解决此问题?

您需要在闭包中包含类型:

this { (foo: Int...) in }

类型推理引擎不够强大,无法解决这种情况。我怀疑这与 SR-6030.

有关