在 Swift 的闭包中使用可变参数列表是否有正确的方法?
很快我注意到我可以声明一个函数,它接受一个可变参数列表,像这样
protocol NumberType: Comparable, IntegerLiteralConvertible, IntegerArithmeticType {}
extension Int: NumberType {}
extension SequenceType where Generator.Element: NumberType {
func satisfy(closure:(args: Generator.Element...) -> ()) {
// Do something
closure(args: 1, 2, 3)
}
}
哪个构建得很好。当我尝试使用该功能时:
[1, 2].satisfy { (args) in
print (args)
}
Xcode 设法自动完成,但在 args 之后关闭括号后,Xcode 中的所有语法突出显示都消失了,我看到一条消息"Command failed due to signal: Segmentation Fault: 11"
,这似乎只是意味着 Xcode 超级混乱。
对于上下文,我计划看看 Swift 是否可以编写一个函数,该函数可以根据可变数量的参数返回答案(映射到获得蛮力答案所需的 for 循环数)。这将是一种测试问题答案的简单方法,例如“给定一个整数数组,找到满足方程 a^3 + b^3 = c^3 + d^3 的所有组合”
let answer = array.satisfy ({ return pow($0, 3) + pow($1, 3) == pow($2, 3) + pow($3, 3) })
反对更优化的解决方案。
“归还所有 2s”就是
let answer = array.satisfy ({ return $0 == 2 })
单个 for 循环