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

时间:2014-09-13 20:56:05

标签: swift immutability

在Swift中,我们用let表示一个不可变的变量。

我不明白为什么你改变他们的属性。例如:

let lbl = UILabel()
lbl.textAlignment = .Right()

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

2 个答案:

答案 0 :(得分:15)

根据Swift Programming Language,常量结构的属性也是常量,但常量可以具有可变属性。

用他们的话说,

  

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

     

对于作为引用类型的类,情况也是如此。如果将引用类型的实例分配给常量,则仍可以更改该实例的变量属性。

答案 1 :(得分:3)

类类型是引用类型 - 值是指向对象的指针。无法更改它只是意味着不更改引用,指向另一个对象。它与你可以用指向的对象做什么没有任何关系。