sguruapp@gmail.com
facebook vk instagram Телеграм youtube

Что такое convenience init в extension - Swift


В Swift вы можете добавлять инициализаторы (включая convenience init) к существующим классам, структурам или перечислениям с помощью расширений (extensions). Это позволяет вам расширять функциональность типов, даже если у вас нет доступа к исходному коду этих типов.

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

Вот пример, иллюстрирующий использование convenience init в расширении:

class Rectangle {
var width: Double
var height: Double

init(width: Double, height: Double) {
self.width = width
self.height = height
}

// Расширение класса Rectangle для добавления нового инициализатора
extension Rectangle {
convenience init(sideLength: Double) {
self.init(width: sideLength, height: sideLength)
}
}

// Использование нового инициализатора
let square = Rectangle(sideLength: 5.0)


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

Основные моменты:

  • convenience init в расширениях может быть использован только с классами.
  • Он должен в конечном итоге вызвать designated initializer того же класса (либо напрямую, либо через другие вспомогательные инициализаторы).
  • Это полезно, когда вы хотите добавить удобные способы инициализации объектов существующих классов без изменения исходного кода этих классов.

Расширения позволяют вам улучшать функциональность классов и добавлять новые возможности, не нарушая оригинальный дизайн типа.
Начать изучение Свифт подробнее







Возврат к списку

обучись профессии будущего

Хочешь стать успешным разработчиком
приложений? Тогда добро пожаловать к нам.

обучись профессии будущего