在 swift 3 中,有没有办法将可变参数函数转换为接收数组的函数,反之亦然?
Is there a way to convert a variadic function into one that receives an array and vice versa in swift 3?
我正在尝试的代码:
fileprivate func concatPairs(_ pairStrings: [String]) -> String {
return "{\n" + pairStrings.joined(separator: ",\n") + "}\n"
}
fileprivate func concatPairs(_ pairStrings: String...) -> String {
return concatPairs(pairStrings)
}
let p1 = jsonify(pair: ("size", 15), quoteValue: false)
let p2 = jsonify(pair: ("length", 23.12), quoteValue: false)
concatPairs(p1, p2)
concatPairs([p1, p2])
有没有办法将 variadic function
转换为接收数组的方法,反之亦然?我想避免所有额外的打字。
尝试使用 Any
作为参数类型。
fileprivate func concatPairs(_ pairStrings: Any...) -> String {
if let strings = pairStrings as? [[String]] {
let newStrings = strings.flatMap { [=10=] }
return "{\n" + newStrings.joined(separator: ",\n") + "}\n"
}
else if let _ = pairStrings.first as? String {
return concatPairs(pairStrings)
}
return ""
}
我正在尝试的代码:
fileprivate func concatPairs(_ pairStrings: [String]) -> String {
return "{\n" + pairStrings.joined(separator: ",\n") + "}\n"
}
fileprivate func concatPairs(_ pairStrings: String...) -> String {
return concatPairs(pairStrings)
}
let p1 = jsonify(pair: ("size", 15), quoteValue: false)
let p2 = jsonify(pair: ("length", 23.12), quoteValue: false)
concatPairs(p1, p2)
concatPairs([p1, p2])
有没有办法将 variadic function
转换为接收数组的方法,反之亦然?我想避免所有额外的打字。
尝试使用 Any
作为参数类型。
fileprivate func concatPairs(_ pairStrings: Any...) -> String {
if let strings = pairStrings as? [[String]] {
let newStrings = strings.flatMap { [=10=] }
return "{\n" + newStrings.joined(separator: ",\n") + "}\n"
}
else if let _ = pairStrings.first as? String {
return concatPairs(pairStrings)
}
return ""
}