Swift 泛型-扩展泛型类型

简介: Swift 泛型-扩展泛型类型

当你扩展一个泛型类型的时候(使用 extension 关键字),你并不需要在扩展的定义中提供类型参数列表。更加方便的是,原始类型定义中声明的类型参数列表在扩展里是可以使用的,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。

下面的例子扩展了泛型类型 Stack,为其添加了一个名为 topItem 的只读计算型属性,它将会返回当前栈顶端的元素而不会将其从栈中移除:

泛型

struct Stack<Element> {    var items = [Element]()    mutating func push(_ item: Element) {        items.append(item)    }    mutating func pop() -> Element {        return items.removeLast()    }} extension Stack {    var topItem: Element? {       return items.isEmpty ? nil : items[items.count - 1]    }} var stackOfStrings = Stack<String>()print("字符串元素入栈: ")stackOfStrings.push("google")stackOfStrings.push("runoob") if let topItem = stackOfStrings.topItem {    print("栈中的顶部元素是:\(topItem).")} print(stackOfStrings.items)

实例中 topItem 属性会返回一个 Element 类型的可选值。当栈为空的时候,topItem 会返回 nil;当栈不为空的时候,topItem 会返回 items 数组中的最后一个元素。

以上程序执行输出结果为:

字符串元素入栈: 

栈中的顶部元素是:runoob.

["google", "runoob"]

我们也可以通过扩展一个存在的类型来指定关联类型。

例如 Swift 的 Array 类型已经提供 append(_:) 方法,一个 count 属性,以及一个接受 Int 类型索引值的下标用以检索其元素。这三个功能都符合 Container 协议的要求,所以你只需简单地声明 Array 采纳该协议就可以扩展 Array。

以下实例创建一个空扩展即可:

extension Array: Container {}

目录
相关文章
|
2月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
37 2
|
2月前
|
Swift 索引 容器
Swift 泛型-Where 语句
Swift 泛型-Where 语句
28 2
|
2月前
|
Swift 索引 容器
Swift 泛型-关联类
Swift 泛型-关联类
28 1
|
2月前
|
存储 Swift
Swift 泛型
Swift 泛型
43 2
|
2月前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
36 1
|
2月前
|
Swift
Swift 扩展
Swift 扩展
32 1
|
存储 Swift 开发者
Swift专题讲解十五——类型构造(一)
Swift专题讲解十五——类型构造
260 0
Swift专题讲解十五——类型构造(一)
|
存储 安全 编译器
Swift专题讲解十五——类型构造(二)
Swift专题讲解十五——类型构造
130 0
|
6月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
196 3
|
2月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
36 2