Swift使方法参数可变?
我如何处理这个错误而不创建额外的变量?
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'
这在递归中可能特别有用。
苹果的inout声明指南可以在这里找到。
对于Swift 1和Swift 3(对于Swift 3,请参阅achi使用inout参数的答案):Swift中的函数参数默认为let
,如果需要更改值,则将其更改为var
,
func reduceToZero(var x:Int) -> Int {
while (x != 0) {
x = x-1
}
return x
}
'var'参数被弃用,并将在Swift 3中被删除。因此,分配一个新参数似乎是现在最好的方法:
func reduceToZero(x:Int) -> Int {
var x = x
while (x != 0) {
x = x-1
}
return x
}
如下所述:'var'参数已被弃用,并将在Swift 3中删除
链接地址: http://www.djcxy.com/p/20795.html上一篇: Swift make method parameter mutable?
下一篇: Why does C++ output negative numbers when using modulo?