В Swift мы обозначаем неизменяемую переменную с помощью let.

Я не понимаю, почему вы меняете их свойства. Например:

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

Почему вы можете изменить textAlignment? В силу изменения свойства, разве мы не изменили также переменную lbl, которая должна была быть постоянной?

9
Jason Renaldo 14 Сен 2014 в 00:56
variable/binding нельзя переназначить другому значению; само по себе это ничего не говорит об изменчивости объекта, возникающей в результате оценки переменной. Это то же самое, что и переменные/поля final/readonly в Java и C#.
 – 
user2864740
14 Сен 2014 в 01:00

2 ответа

Лучший ответ

Согласно Swift Programming Language свойства константы < em> структуры также являются константами, но константы классов могут иметь изменяемые свойства.

По их словам,

Если вы создаете экземпляр структуры и назначаете этот экземпляр константе, вы не можете изменять свойства экземпляра, даже если они были объявлены как свойства переменных ...

То же самое не относится к классам, которые являются ссылочными типами. Если вы назначаете экземпляр ссылочного типа константе, вы все равно можете изменить свойства переменной этого экземпляра.

16
erdekhayser 14 Сен 2014 в 01:00
Спасибо, отлично объясняет. Приму, когда смогу.
 – 
Jason Renaldo
14 Сен 2014 в 01:03

Типы классов являются ссылочными типами - значение является указателем на объект. Невозможность изменить это просто означает не изменять ссылку, чтобы указать на другой объект. Это не имеет ничего общего с тем, что вы можете делать с указанным объектом.

3
newacct 14 Сен 2014 в 09:49