【发布时间】:2019-10-21 02:19:01
【问题描述】:
如何将数组传递给可变参数的函数?
static func apply<T>(fn: (T ...) -> T, xs: [T]) -> T {
return fn(xs) // gives '[T]' is not convertible to 'T' error
}
我正在尝试获得类似的东西
func foo(n: String ...) -> String {
return n.joined(separator: ", ")
}
foo(n: "a", "b", "c")
apply(foo, "a", "b", "c") // "a, b, c"
如果可能,我希望将 fn: (T ...) -> T 的函数签名保留为可变参数,并根据需要更改其余部分以适应问题。
【问题讨论】:
-
如果可能,我无法更改应用的函数签名。我想保持
fn: (T ...)不变。 -
Swift 目前无法将数组拼接成可变参数。
-
您不能将数组传递给采用可变参数的函数,如引用的问答中所述。没有办法解决这个问题。