Можете ли вы объяснить вывод следующего прогнозируемого значения Swift? - PullRequest
0 голосов
/ 26 марта 2020
@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. Может кто-нибудь объяснить мне, как это работает?

1 Ответ

0 голосов
/ 26 марта 2020

Вы скопировали код неправильно.

У вас есть

if num > maximum {

, но нужно

if newValue > maximum {
...