美文网首页
Swift 泛型

Swift 泛型

作者: Yuency | 来源:发表于2018-01-03 17:49 被阅读10次

    泛型函数

        // 泛型 `我设计一套逻辑, 这套逻辑和类型无关`
        //在函数名后面写 `<T>` 泛型函数
        func exchangeTwoThings<T>(a: inout T, b: inout T) {
            (a, b) = (b, a)
        }
    

    泛型类型

    struct Person<T1, T2> {
        var a: T1
        var b: T2
    }
    
    //这个 T1 和 T2 类型可以自己指定
    let person: Person<String, Int> = Person(a: "小明", b: 99)
    let person2 = Person<Float, Double>(a: 22, b: 0.22)
    

    泛型约束

    /// 示例代码1
    /// 找到数组里面最大的元素
    func topOne<T: Comparable>(array: [T]) -> T {
        return array.reduce(array[0]){ max($0, $1) }
    }
    
    
    ///示例代码2
    protocol proA {}
    
    protocol proB {}
    
    func topThings<T: proA & proB & Comparable> (array: [T]) -> T? {
    
        return array.reduce(nil, { (tempTop: T?, nextOne: T)  in
            /* 这里写自定义的逻辑... */
            return tempTop
        })
    }
    

    相关文章

      网友评论

          本文标题:Swift 泛型

          本文链接:https://www.haomeiwen.com/subject/lgcknxtx.html