如何在不创建额外变量的情况下处理这个错误?
func reduceToZero(x:Int) -> Int {
while (x != 0) {
x = x-1 // ERROR: cannot assign to 'let' value 'x'
}
return x
}
我不想创建额外的变量来存储 x 的值。甚至可以做我想做的事吗?
最佳答案
如其他答案所述,从 Swift 3 开始,将 var 放在不推荐使用的变量之前。尽管其他答案中未说明能够声明 inout
参数。想想:传递一个指针。
func reduceToZero(_ x: inout Int) {
while (x != 0) {
x = x-1
}
}
var a = 3
reduceToZero(&a)
print(a) // will print '0'
这在递归中特别有用。
可以找到 Apple 的 inout
声明指南 here .
关于Swift 使方法参数可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24077880/