Ответ
Да, можно, но только при условии, что также определен и геттер (getter). Вычисляемое свойство не может иметь только сеттер.
Пример объявления:
private var _storedValue: Int = 0
var computedProperty: Int {
get {
return _storedValue
}
set(newValue) {
// Можно добавить валидацию или дополнительную логику
_storedValue = newValue
}
}
Ключевые правила:
- Обязателен геттер. Без блока
getсвойство считается read-only. - Сеттер опционален. Его можно опустить, сделав свойство доступным только для чтения.
- Логика в сеттере. В блоке
setможно выполнять валидацию, обновлять другие свойства или вызывать методы. - Невозможен сеттер без геттера. Компилятор Swift выдаст ошибку.
Ответ 18+ 🔞
Да ты посмотри, какая история интересная вырисовывается! Сижу я тут, кофе попиваю, и вдруг осенило — а ведь в Swift, сука, нельзя просто так взять и объявить вычисляемое свойство с одним лишь сеттером! Это как прийти в гости и заявить: «Я только сру, а мыться не буду». Не прокатит, блядь!
Вот представь себе, пишешь ты код, такой весь из себя умный, и думаешь: «О, сделаю-ка я свойство, которое только записывается!». А компилятор тебе такой: «Ага, щас, блядь! А где геттер, пидорас шерстяной?». И всё, приехали.
Так что запомни раз и навсегда, как отче наш: геттер обязателен, ёпта! Сеттер — это уже по желанию, как добавка к борщу. Хочешь — кладёшь сметану, не хочешь — жрёшь так.
Вот смотри, как это выглядит в реальной жизни, без всяких там выебонов:
private var _storedValue: Int = 0 // Это наша заначка, спрятанная от всех
var computedProperty: Int {
get { // Без этого блока — нихуя не получится, это как пропуск на завод
return _storedValue
}
set(newValue) { // А это уже твоя воля, можешь тут всю магию творить
// Например, проверить, не несёт ли клиент хуйню
if newValue >= 0 {
_storedValue = newValue
} else {
print("Ой, всё! Отрицательное число? Серьёзно?")
}
}
}
Итог простой, как три копейки:
- Геттер — святое. Без него свойство считается read-only, и всё, пиши пропало.
- Сеттер — опциональный прихулок. Хочешь — добавляй свою логику, не хочешь — и так сойдёт.
- Сеттер без геттера — это как велосипед без колёс. Никуда не уедешь, только насмешишь компилятор, который тебе тут же впендюрит ошибку.
Вот и весь сказ, блядь. Не усложняй, делай по правилам, и будет тебе счастье. А то начнёшь выёбываться — сам от себя охуеешь, когда ничего не заработает.