为什么在Swift中不可变对象的属性是可变的?

9
在Swift中,我们用let来表示不可更改的变量。
我不理解的是为什么要更改它们的属性。例如:
let lbl = UILabel()
lbl.textAlignment = .Right()

为什么可以更改 textAlignment?通过变异属性,我们也变异了本应该是常量的变量 lbl 吗?

变量/绑定不能被重新分配到不同的值;这仅仅说明了变量求值结果对象的可变性。这与Java和C#中的final/readonly变量/字段相同。 - user2864740
2个回答

16
根据Swift编程语言,常量结构体的属性也是常量,但常量可以有可变属性。
他们说:

如果您创建一个结构体实例并将该实例分配给常量,则无法修改实例的属性,即使这些属性被声明为可变属性...

对于引用类型的类则不同。如果将引用类型的实例分配给常量,则仍然可以更改该实例的可变属性。


谢谢,解释得非常清楚。我会在可以的时候接受它。 - Jason Renaldo

3

类类型是引用类型——值是指向对象的指针。不能更改它仅仅意味着不能更改引用,以指向另一个对象。这与您可以对所指向的对象做什么没有任何关系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接