泛型<>、inout、&
// 用<>包裹,放在函数名后面,在调用的时候会被实际的类型替代
// 在参数前面用inout修饰,函数内部实现改变外部参数传入参数时(调用函数时)
// 在变量名字前面用 & 符号修饰表示,表明这个变量在参数内部是可以被改变的(可将改变传递到原始数据)
在下面的泛型函数例子中,占位符T是类型参数的一个例子。类型参数指定并命名一个占位符类型,并用<>包裹,放在函数名后面。一旦一个参数类型确定,就可以指定参数类型,或者返回值的类型,还可以用作函数体的注释类型。在调用的时候会被实际的类型替代,如传递的是Int,就替换为Int
func swap<T>(a: inout T , b:inout T){
//交换数值
let temp = a
a = b
b = temp
}
var x = 20 , y = 30
swap(a:&x , b:&y)
参考:https://www.jianshu.com/p/6b858cb0b55d(swift3.0 中inout关键字)