您正在使用IE低版浏览器,为了您的IThao123账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
首页 > 专题 > 技术 > Swift入门学习 > 3.7.泛型

3.7.泛型

在尖括号(< >)中写一个名字来创建一个泛型函数或者类型
func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
    var result = ItemType[]()
    for i in 0..times {
        result += item
    }
    return result
}
repeat("knock", 4)

 

 

你可以创建函数和方法的通用形式,以及类、枚举、结构。

// Reimplement the Swift standard library's optional type
enum OptionalValue<T> {
    case None
    case Some(T)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(100)

 


在类型名后面使用 where 来指定一个需要的列表 —— 例如,限定实现一个接口的类型,限定两个类型要相同,或者限定一个类必须有一个特定的父类。

func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool {
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                return true
            }
        }
    }
    return false
}
anyCommonElements([1, 2, 3], [3])
更简单形式,忽略 where 。在冒号后面写接口或类名: <T: Equatable> 和 <T where T: Equatable> 是等价的。


文章点评: