下面是一个泛型的函数
这个函数主体、功能跟上面的例子类似,用来交换两个同样类型的值,但是这个函数用 T 占位符来代替实际的类型。并没有指定具体的类型,但是传入的a,b 必须是同一类型T。在调用这个函数的时候才能指定 T 是那种具体的类型。还有函数名后跟的那个 <T> 是函数定义的一个占位类型名,并不会查找T的具体类型
- func SwapTwoValues <T> (inout a: T,inout b :T){
- let tempValue = a
- a = b
- b = tempValue
- }
- SwapTwoValues(&oneInt,b: &twoInt)
- print("oneInt:\(oneInt),twoInt:\(twoInt)") // oneInt:3,twoInt:4
- var oneStr = "hello"
- var twoStr = "world"
- SwapTwoValues(&oneStr,b: &twoStr)
- print("oneStr:\(oneStr),twoStr:\(twoStr)")// oneStr:world,twoStr:hello
- var oneDouble = 10.01
- var twoDouble = 20.02
- SwapTwoValues(&oneDouble,b: &twoDouble)
- print("oneDouble:\(oneDouble),twoDouble:\(twoDouble)")// oneDouble:20.02,twoDouble:10.01