《Swift开发实战》——第2章,第2.8节泛型

简介:

本节书摘来自异步社区《Swift开发实战》一书中的第2章,第2.8节泛型,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.8 泛型
在Swift语言中,在尖括号里写一个名字来创建一个泛型函数或者类型。例如,如下所示的演示代码。

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)

在Swift语言中,在类型名后面使用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])

在Swift语言中,可以忽略where关键字,只在冒号后面写协议或者类名。例如,如下两种格式是完全等价的。

<T: Equatable>
<T where T: Equatable>
相关文章
|
3月前
|
存储 安全 Swift
Swift 语言:什么是 Swift 的泛型(Generics)?
Swift 语言:什么是 Swift 的泛型(Generics)?
35 0
|
6月前
|
Swift C++ 索引
33 Swift泛型的发展历史与泛型的概述
Swift泛型的发展历史与泛型的概述
32 0
|
Swift
Swift实用小册21: Generics泛型的使用
在本章中,你将学会Generics泛型的使用方法。
149 0
Swift实用小册21: Generics泛型的使用
|
存储 编译器
Swift-进阶 14:泛型
Swift-进阶 14:泛型
199 0
|
Swift
Swift专题讲解二十二——泛型
Swift专题讲解二十二——泛型
95 0
|
Swift
Swift中的泛型语法实践
先来简单的, 由浅入深嘛。
1353 0
|
存储
Swift 2 中为实存类型和泛型搭桥牵线
本文讲的是Swift 2 中为实存类型和泛型搭桥牵线,我们又回到了讨论泛型的另一个章节,来讨论泛型,有其他类型的协议和在 Swift 2 中的其他类型的系统限制。这次我们会深入讨论一个有趣的变通方法,它是那个声名狼藉的 jckarter 教会我的。
1037 0
|
程序员 iOS开发 开发者
《Swift iOS应用开发实战》——导读
随着Swift语言的到来,这种简单、好用又安全的编程语言将吸引更多的开发者加入,让苹果软件生态圈更加繁荣。如此,“果粉”将可以在App Store和Mac Store中下载到更多称心如意的App。从某种意义上说,Swift语言是苹果的一项新的商业战略。
1736 0