Swift中的易变性

Swift中的易变性,swift,immutability,Swift,Immutability,Swift将根据您是使用var还是let创建可变集合或不可变集合。这引起了我的兴趣-编译器可能必须在每种情况下干涉和初始化不同类的对象 它是如何工作的?我可以对代码使用相同的机制吗?教斯威夫特在我的课堂上做同样的把戏?没有什么可教的。无论您是说var还是let,类实例总是可变的 集合是结构;您描述的规则是针对结构的,结构是另一种动物。他们几乎是斯威夫特的班级,但不完全是;你发现了一个关键的区别。您创建的任何结构都将以相同的方式运行:通过声明的引用,它将是不可变的。let“编译器可能必须在每种情况

Swift将根据您是使用
var
还是
let
创建可变集合或不可变集合。这引起了我的兴趣-编译器可能必须在每种情况下干涉和初始化不同类的对象


它是如何工作的?我可以对代码使用相同的机制吗?教斯威夫特在我的课堂上做同样的把戏?

没有什么可教的。无论您是说
var
还是
let
,类实例总是可变的


集合是结构;您描述的规则是针对结构的,结构是另一种动物。他们几乎是斯威夫特的班级,但不完全是;你发现了一个关键的区别。您创建的任何结构都将以相同的方式运行:通过声明的引用,它将是不可变的。
let

“编译器可能必须在每种情况下干涉并初始化不同类的对象。”不,这实际上都与声明有关。数组真的是结构吗?它们可以修改元素但不能修改其长度的复杂语义,它们可能共享或不共享状态,这取决于您对它们所做的操作。@Chuck:
Array
是一个结构。@matt如果我想用编译器确定的易变性创建自己的集合,该怎么办?