โ“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