Swift 泛型-类型约束

简介: Swift 泛型-类型约束

类型约束指定了一个必须继承自指定类的类型参数,或者遵循一个特定的协议或协议构成。

类型约束语法

你可以写一个在一个类型参数名后面的类型约束,通过冒号分割,来作为类型参数链的一部分。这种作用于泛型函数的类型约束的基础语法如下所示(和泛型类型的语法相同):

func someFunction<T: SomeClass, U: SomeProtocol>(someT: T, someU: U) {

   // 这里是泛型函数的函数体部分

}

上面这个函数有两个类型参数。第一个类型参数 T,有一个要求 T 必须是 SomeClass 子类的类型约束;第二个类型参数 U,有一个要求 U 必须符合 SomeProtocol 协议的类型约束。

实例

泛型

// 非泛型函数,查找指定字符串在数组中的索引func findIndex(ofString valueToFind: String, in array: [String]) -> Int? {    for (index, value) in array.enumerated() {        if value == valueToFind {            // 找到返回索引值            return index        }    }    return nil}   let strings = ["google", "weibo", "taobao", "runoob", "facebook"]if let foundIndex = findIndex(ofString: "runoob", in: strings) {    print("runoob 的索引为 \(foundIndex)")}

索引下标从 0 开始。

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

runoob 的索引为 3

目录
相关文章
|
8天前
|
Swift 索引 容器
Swift 泛型-Where 语句
Swift 泛型-Where 语句
16 2
|
8天前
|
Swift 索引 容器
Swift 泛型-关联类
Swift 泛型-关联类
15 1
|
9天前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
17 2
|
9天前
|
存储 Swift
Swift 泛型
Swift 泛型
16 2
|
18天前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
31 2
|
4月前
|
存储 安全 Swift
Swift高级特性:泛型与协议
【7月更文挑战第10天】Swift高级特性:泛型与协议增强代码复用与类型安全。泛型允许编写通用代码,如`swap`函数和泛型`Stack`结构体,支持类型约束如`Comparable`。协议定义行为蓝图,类型遵循协议需实现其要求。通过两者结合,构建高效灵活的代码结构。
|
存储 Swift 开发者
Swift专题讲解十五——类型构造(一)
Swift专题讲解十五——类型构造
254 0
Swift专题讲解十五——类型构造(一)
|
存储 安全 编译器
Swift专题讲解十五——类型构造(二)
Swift专题讲解十五——类型构造
122 0
|
4月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
142 3
|
17天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
33 1