swift - 隐式展开可选的不可变

标签 swift

为什么我不能改变隐式展开的可选变量?

这是一个重现问题的简短示例:

用数组

var list: [Int]! = [1]
list.append(10) // Error here

“[Int]”类型的不可变值只有名为“append”的可变成员

用整数

var number: Int! = 1
number = 2
number = 2 + number
number += 2 // Error here

找不到接受所提供参数的“+=”重载

最佳答案

因为您尝试改变它们的方式是改变值(不可变的)而不是改变 var

在 Swift 中,值类型是不可变的。始终如一。

突变不是值的突变,它是包含值的变量的突变。

Int的情况下,+=运算符在左边得到一个结构,在右边得到一个Int,它不能向一个int添加一个结构.

Array 的情况下,append 是一个可变成员。但它是在一个不直接存储在变量中的不可变值上调用的。它只能对直接存储在变量中的值进行操作(这就是使它们可变的原因:它们存储在变量中的事实。它们并不是真正可变的,变量是)。

关于swift - 隐式展开可选的不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040174/

相关文章:

ios - RestKit 和 Swift 错误响应描述符

ios - WKWebView 没有加载 url

ios - 如何在TruncatingMiddle中设置导航标题的linebreakMode

ios - 使用 iOS 和 Swift 访问深度嵌套的 json 数据的最简单方法是什么?

iOS swift : Sort array into three dimensional array

swift - 如何在 Parse 中查找名字和姓氏

ios - 将字节转换为字符串不起作用

swift - 动态 scrollView contentSize autoLayoutConstraints swift

ios - 如何从动态创建的 TableView 单元格的输入字段中检索数据到数组

ios - 通知横幅样式 iOS