使用let声明的数组为何无法调用append?Swift代码报错解析
为什么Swift里用
let声明的数组不能调用append? 嘿,这个问题绝对是Swift入门阶段的高频困惑,我来给你拆解明白:
首先你得搞懂两个容易混淆的点:变量/常量的绑定规则 和 值类型的可变性。
你以为“数组本身是可变类型”,其实Swift里的Array是值类型,它的可变性完全由你声明它的方式决定:
- 用
var声明的数组:你可以随便改它的内容——加元素、删元素、改元素值都没问题,因为这个变量绑定的是一个允许被修改的数组实例。 - 用
let声明的数组:这个数组实例是完全不可变的,任何会改变它内容的操作(比如append)都会直接报错,就像你遇到的情况。
换句话说,let在这里约束的不是“数组能不能变”,而是“这个变量绑定的数组实例能不能被修改”——对于值类型来说,let就意味着整个实例的内容都不能动。
回到你的代码,问题就出在这一行:
let result:[Int] = [Int]()
把let换成var,问题立刻解决:
var result:[Int] = [Int]()
顺便补充个小知识点:如果是类这种引用类型,let的规则不一样——let只会约束你不能把变量指向另一个实例,但你可以修改这个实例本身的属性(只要属性是可变的)。但数组是值类型,所以完全适用上面的规则。
内容的提问来源于stack exchange,提问作者Carpetfizz
相关产品推荐
相关产品推荐

