koromiko / TheGreatWall

Using MVVM to tackle complicated feed view
129 stars 33 forks source link

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

Open cliff357 opened 4 years ago

koromiko commented 4 years ago

因為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>()

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

cliff357 commented 4 years ago

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