Не совсем понимаю принцип вычисляемых свойств?

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

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

Для примера рассмотрим структуру Circle, которая имеет свойство radius (радиус) и вычисляемое свойство area (площадь):

struct Circle {
    var radius: Double
    
    var area: Double {
        get {
            return Double.pi * radius * radius
        }
        set {
            radius = sqrt(newValue / Double.pi)
        }
    }
}

В этом примере, геттер вычисляемого свойства area возвращает площадь круга на основе значения radius, используя формулу π * r^2. Сеттер принимает новое значение площади и обновляет значение radius на основе формулы sqrt(area / π).

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

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