Код IT
← Каталог

Свойства-обёртки в Swift — Параметры обёртки

Фрагмент из «Свойства-обёртки в Swift»: Параметры обёртки.

Plain text main.swift
@propertyWrapper
struct Logged<Value> {
    private var value: Value
    init(wrappedValue: Value) { self.value = wrappedValue }

    var wrappedValue: Value {
        get { value }
        set {
            print("было: \(value), стало: \(newValue)")
            value = newValue
        }
    }

    var projectedValue: Logged<Value> { self }
    func reset(to newValue: Value) { value = newValue }
}

struct Form {
    @Logged var email = ""
}

var form = Form()
form.email = "a@b.c"
form.$email.reset(to: "")
@propertyWrapper
struct Logged<Value> {
    private var value: Value
    init(wrappedValue: Value) { self.value = wrappedValue }

    var wrappedValue: Value {
        get { value }
        set {
            print("было: \(value), стало: \(newValue)")
            value = newValue
        }
    }

    var projectedValue: Logged<Value> { self }
    func reset(to newValue: Value) { value = newValue }
}

struct Form {
    @Logged var email = ""
}

var form = Form()
form.email = "a@b.c"
form.$email.reset(to: "")