Swift简明教程(七)泛型

来源:互联网 发布:4399游戏盒刷盒币软件 编辑:程序博客网 时间:2024/04/30 06:17

Swift简明教程(七)泛型


使用尖括号可以定义泛型函数或类型。

func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {    var result = ItemType[]()    for i in 0..times {        result += item    }    return result}repeat("knock", 4)


同样可以创建泛型类、枚举类型和结构体类型。

//重新实现Swift标准库中的optional类型enum OptionalValue<T> {    case None    case Some(T)}var possibleInteger: OptionalValue<Int> = .NonepossibleInteger = .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])


试验修改anyCommonElements函数,使得它能够返回两个序列的交集。


在简单的情况下,可以省略where,直接写后面的部分就可以了,如<T: Equatable><T where T: Equatable>的作用一样的。


0 0
原创粉丝点击