下面是一个泛型的函数
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