Возможно ли создание общих вычисляемых свойств с требованиями Self или связанного типа в Swift, и если да, то как? - PullRequest
0 голосов
/ 14 февраля 2019

Обратите внимание на следующее:

protocol SomeProtocol: Equatable {}

// then, elsewhere...

var someValue: Any?

func setSomething<T>(_ value: T) where T: SomeProtocol {
    someValue = value
}

func getSomething<T>() -> T? where T: SomeProtocol {
    return someValue as? T
}

Эти функции работают нормально, но по сути действуют как вычисляемые свойства.Есть ли способ реализовать что-то вроде следующего?

var something<T>: T where T: SomeProtocol {
    get { return someValue as? T }
    set { someValue = newValue }
}

Спасибо за чтение.Извиняюсь, если этот вопрос уже задавался в другом месте, я искал, но иногда моя поисковая фу слаба.

1 Ответ

0 голосов
/ 14 февраля 2019

Необходимо определить вычисляемое свойство для универсального типа, само вычисляемое свойство не может определить параметр универсального типа.

struct Some<T:SomeProtocol> {
    var someValue:Any

    var something:T? {
        get {
            return someValue as? T
        }
        set {
            someValue = newValue
        }
    }
}
...