免费开源的iOS开发学习平台

Swift语法介绍: 泛型generic

为了更好的重用代码,对于一个函数中的参数可以预先不指定具体的类型,而采用占位符的方式,待具体执行时,再指定具体的类型。

不使用泛型

假如需要对比两个IntDouble或者String类型的值是否相同,则必须要填写如下3个不同的函数。

func intValueCompare(param1:Int, param2:Int) -> Bool {
    return param1 == param2
}

func doubleValueCompare(param1:Double, param2:Double) -> Bool {
    return param1 == param2
}

func stringValueCompare(param1:String, param2:String) -> Bool {
    return param1 == param2
}

intValueCompare(1, param2: 1)
doubleValueCompare(1.0, param2: 2.0)
stringValueCompare("hi", param2: "swift")

定义泛型

  • 为了更好的重用代码,对于一个函数中的参数可以预先不指定具体的类型,而采用占位符的方式,待具体执行时,再指定具体的类型。
  • 形式:func 函数名<泛型类型名称: 父类, 协议> (参数1: 泛型类型名称 ) -> 返回值类型 { 函数体 }
func objValueCompare<Type:Equatable>(param1:Type, param2:Type) -> Bool {
    return param1 == param2
}

objValueCompare(1, param2: 1)
objValueCompare(1.0, param2: 2.0)
objValueCompare("hi", param2: "swift")

运行结果:

代码下载

https://github.com/99ios/SwiftBasic

视频教程