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

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

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

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

8
Jason Renaldo 14 Сен 2014 в 00:56

2 ответа

Лучший ответ

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

По их словам,

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

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

16
erdekhayser 13 Сен 2014 в 21:00

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

3
newacct 14 Сен 2014 в 05:49