default type parameter

問:「 can generic types have default type parameters❓」

問:「 can generic types have default type parameters❓」

答:「目前不支援,但可以使用extension ... where ...語法。」

// generic type
struct Manager<T> {
    let thing: T
}

// ⭐️ extension with a generic where clause
//    將 T 預設為 Int
extension Manager where T == Int {
    // ⭐️ 當 init 不使用任何參數時,
    //    下面的寫法會告訴 compiler:T == Int
    init() {
        self.init(thing: 0)
    }
}

// test
let m1 = Manager()                // T == Int
let m2 = Manager(thing: true)     // I == Bool

m1.thing  // 0
m2.thing  // true

Last updated