@propertyWrapper
struct smallNumber {
private var num: Int
private var maximum: Int
var projectedValue: Bool
var wrappedValue: Int {
get { return num }
set {
if num > maximum {
num = maximum
projectedValue = true
}
else {
num = newValue
projectedValue = false
}
}
}
init() {
num = 0
maximum = 12
projectedValue = false
}
init(wrappedValue: Int) {
maximum = 12
projectedValue = false
num = min(wrappedValue, maximum)
}
init(wrappedValue: Int, maximum: Int) {
self.maximum = maximum
projectedValue = false
num = max(wrappedValue, maximum)
}
}
struct Rectangle {
@smallNumber var height: Int
@smallNumber var width: Int
var area: Int {
get {
return height * width
}
}
}
var x = Rectangle()
x.height = 9
x.width = 89
//x.width = 78
print(x.$height, x.$width, x.area)
Привет, я быстро учусь, и у меня возникли проблемы с приведенным выше кодом. В быстрой ссылке (прогнозируемые значения) написано, что если мы установим значение x больше 12, то projectedValue станет истинным. Но после запуска приведенного выше кода x. $ Width выводит false. После удаления комментария на 2-й последней строке x. $ Width выводит true. Может кто-нибудь объяснить мне, как это работает?