2015-02-06 2 views
0

Почему мы не можем изменить свойства экземпляра из методов экземпляра в Swift для типов значений, таких как struct, enums? Почему одно и то же работает для ссылочных типов, таких как классы?Изменение свойств экземпляра из методов экземпляра для типов значений в Swift

enter image description here

Ведение мутирует FUNC в структуры делает его действовать как метод экземпляра класса?

+3

Вы должны отметить метод как «мутирующий». - Это * должно быть * спрошено и ответили до ... –

+0

Я спрашиваю причину, почему это отличается, я знаю, что выполнение мутирования заставляет его работать, и вот что говорит вторая часть моего вопроса? Является ли это концепцией ООП или просто относится к Свифт? – Anuj

+0

Тогда я неправильно понял ваш вопрос, извините. - Классы являются * ссылочными типами *, и их методы всегда могут изменять состояние, в отличие от структур, которые являются * значениями типов *, где метод должен быть помечен как изменяемый. –

ответ

0

Дизайн Swift сильно зависит от функциональных языков программирования, таких как Haskell, F #, Scala, Erlang и т. Д. Одним из основных принципов функционального программирования является то, что данные неизменяемы. Функции работают с данными и производят новые значения, а не изменяют данные, устраняющие побочные эффекты. Эти влияния видны во многих местах Swift, таких как неизменяемые типы значений, функция карты, функции лямбда, дополнительные значения и сопоставление образцов (переключатель в Swift).