Видеокурсы по изучению языка программирования Swift. Подробнее

Выбираем между классом и структурой

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Вы можете использовать как классы так и структуры для объявления ваших пользовательских типов данных для использования их в качестве строительных блоков вашего программного кода.

Однако экземпляр структуры всегда передается по значению, а вот экземпляр класса - по ссылке. Это значит, что они подходят под разные задачи. В зависимости от того, какие конструкции данных вы рассматриваете и какую функциональность вы преследуете, вам следует решить как должны быть объявлена конструкция, как класс или как структура.

Следуя основной линии, рассмотрим некоторые условия, при которых нам следует создавать структуру:

  • Основная цель структуры - инкапсуляция нескольких сравнительно простых значений данных.
  • Очень логично предположить, что инкапсулированные значения будут скорее копированы, чем переданы по ссылке, когда вы назначаете или передаете экземпляр структуры.
  • Любые свойства, хранящиеся в структуре, сами по себе типы значений, которые тоже будут скопированы, а не переданы по ссылке.
  • Структуры не нуждаются в наследовании свойств или поведения от других существующих типов.

Примеры хороших кандидатов структур:

  • Размер геометрической фигуры, возможно инкапсулирует width, height свойства, оба свойства типа Double.
  • Способ обратиться к диапазону внутри серии, возможно инкапсулирование свойства start и свойства length, оба свойства типа Int.
  • Точка в 3D координатной системе, возможно инкапсулирование свойств x,y и z, тип всех свойств Double.

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

Swift: 
3.0