Answers:
如其他答案所述,从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
声明指南可以在这里找到。
inout
关键字应放在参数名称和参数类型之间,如下所示:func reduceToZero(x: inout Int)
在当前的Swift 3版本中。
'var'参数已被弃用,并将在Swift 3中删除。因此,分配新参数似乎是最好的方法:
func reduceToZero(x:Int) -> Int {
var x = x
while (x != 0) {
x = x-1
}
return x
}
如此处所述:'var'参数已弃用,并将在Swift 3中删除
x
到新的var x
吗?还是Swift可以做得比这更有效?
x
适合套准),几乎没有成本。如果x
是被突变的数组,结构或对象,则几乎肯定需要执行一个副本(除非优化器可以对其进行内联分析并对其进行别名)。
var
args 替代使用args inout
可能会产生意想不到的副作用,尤其是。如果var是一个指针。
对于Swift 1和2(对于Swift 3,请使用inout参数,请通过achi回答):let
默认情况下,Swift中的函数参数为,因此var
如果需要更改该值,请将其更改为
func reduceToZero(var x:Int) -> Int {
while (x != 0) {
x = x-1
}
return x
}
var
在参数中很有可能会在github.com/apple/swift-evolution/blob/master/proposals/…的
在Swift中,您只需var
在函数声明中的变量名称之前添加关键字:
func reduceToZero(var x:Int) -> Int { // notice the "var" keyword
while (x != 0) {
x = x-1
}
return x
}
请参阅Swift书(今天,iBook的第210页)的“函数”一章中的“常量和变量参数”小节。