КОДЕКС

Геттеры и сеттеры в Swift

Узнайте, как геттеры и сеттеры работают с вычисляемыми свойствами в Swift.

Вы можете хранить свойства в классах, структурах и перечислениях. Эти свойства называются сохраненными свойствами.

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

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

Пример - весовая категория

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

Для этого давайте реализуем класс Weight с вычисляемым свойством:

Теперь вы можете создавать Weight объекта и без проблем обновлять как фунты, так и килограммы:

Выход:

220.5
142.85715

Давайте подробнее рассмотрим класс Weight и свойство pounds, чтобы понять, как работают геттеры и сеттеры.

В классе Weight kilograms хранится в объекте веса (сохраненное свойство). Свойство pounds является вычисляемым свойством. Мы можем использовать это для косвенного доступа и изменения kilograms.

Когда мы звоним:

weight.pounds

weight вычисляет количество фунтов, запустив свой метод получения:

get {
    return (kilograms * 2.205)
}

Как насчет того, чтобы изменить вес объекта, используя фунты вместо килограммов?

weight.pounds = 315

На этот раз вызывается метод установки:

set(newWeight) {
    kilograms = newWeight / 2.205
}

Сеттер преобразует количество фунтов в килограммы и сохраняет его вkilograms. pounds нигде не хранится, поскольку вычисляется с помощью kilograms.

Обратите внимание, что определение метода установки не является обязательным. Вы можете иметь вычисляемое свойство только с помощью метода получения.

Заключение

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

Спасибо за прочтение. Удачного кодирования!

Убедитесь, что вы подписаны на меня на Medium. Давайте подключимся и к Linkedin.

Стать гением

Тебе понравилась эта статья?

Станьте участником Medium.com, чтобы читать главные новости экспертов в этой области.

Отказ от ответственности: присоединяясь по предоставленной ссылке, я зарабатываю небольшую комиссию без каких-либо дополнительных затрат для вас :)

Вы можете найти что-то интересное