下面是一个泛型的函数
func SwapTwoValues <T> (inout a: T,inout b :T){
let tempValue = a
a = b
b = tempValue
}
这个函数主体、功能跟上面的例子类似,用来交换两个同样类型的值,但是这个函数用 T 占位符来代替实际的类型。并没有指定具体的类型,但是传入的a ,b 必须是同一类型T。在调用这个函数的时候才能指定 T 是那种具体的类型。还有函数名后跟的那个 <T> 是函数定义的一个占位类型名,并不会查找T的具体类型
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