TheGreatWall icon indicating copy to clipboard operation
TheGreatWall copied to clipboard

發現observable 一定要有default value, 請問可以default nil 嗎?

Open cliff357 opened this issue 5 years ago • 2 comments

cliff357 avatar Dec 06 '19 07:12 cliff357

因為Observable是有一個泛型T的類別,如果不希望這個T永遠是optional的話,就沒辦法指定default value是nil

class Observable<T> {
    let value: T? = nil   // T一定要包成optional才有辦法default nil 
}

如果真的很想要default nil的話,可以subclass它並且指定optional型別

class NullableObserver<U>: Observable<U?> {
    override init(value: U? = nil) {
        super.init(value: value)
    }
}

// 就可以這樣
NullableObserver<String>()

當然不太建議這樣做就是了

koromiko avatar Dec 06 '19 13:12 koromiko

明白明白,但為什麼不太建議? 是T 不建議 nil 嗎?

cliff357 avatar Dec 13 '19 01:12 cliff357