Swift 使方法参数可变?

标签 swift syntax immutability mutability

如何在不创建额外变量的情况下处理这个错误?

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/

相关文章:

swift - UIViewController 未加载属性检查器中指定的 DAE 文件

python - 如何改变 python 列表索引的语法?

ios - 如何从另一个 Controller 打开嵌入式 Segue Controller ?

JavaScript 代码约定——变量声明

list - 在Haskell中构建数据类型列表

json - 如何从 scala 案例类中装饰不可变对象(immutable对象)图

loops - Clojure - 循环变量 - 不变性

arrays - Swift 是否提供任何内置函数来返回附加到不可变数组的结果?

ios - 如何使 CAGradientLayer 遵循 CGPath

ios - 如何以编程方式布局 Storyboard上的 View ?