В вашем примере вы всегда будете возвращать Product(SOME_EQUATION)
. Если это уравнение не зависит от класса, содержащего свойство product
, возможно, стоит рассмотреть его как фабричный метод в Product
.
Обратите внимание, что значение в его 'set
является рекурсией
Чтобы получить реальное вычисляемое свойство:
var product: Product? {
return Product(SOME_EQUATION)
}
Обратите внимание, что let product = Product(SOME_EQUATION)
на самом деле лучше, чем вычисляемое свойство, если оно подходит в вашем случае, потому что это уравнение будет выполнено только один раз.
Edit:
Вычисленные свойства не используются для того, что вы описываете. Не иметь логики в установщике и не использовать напрямую значение, которое вы установили, неправильно.
Как я уже говорил выше, вам нужно создать фабричный метод в вашем Product
классе как:
static func create(for someEquation: YourType) -> Product {
return Product(someEquation)
}
И в вашем классе вы используете его как:
Product.create(for: SOME_EQUATION)
Дополнительная информация о вычисляемых свойствах: вы используете их, когда у вас уже есть зависимости в вашем классе, и вы хотите извлечь некоторую часть ваших данных для удобства.
Если вы зависите от какого-то параметра, а не от зависимости, вам лучше сделать функцию, принимая параметр!