如果要写可复用的函数和类型,Swift 的泛型是个很好的选择。
举个例子,有两个变量 A和 B,想写一个交换 A和 B值的函数。如果用非泛型的函数来写,首先要确定 A和 B的类型,如果是 int那函数的输入参数就是 int类型,代码如下:
// 定义一个交换两个变量的函数
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var numb1 = 100
var numb2 = 200
print("交换前数据: \(numb1) 和 \(numb2)")
swapTwoInts(&numb1, &numb2)
print("交换后数据: \(numb1) 和 \(numb2)")
如果 A和 B的类型是 String,那就要重新写一个 swapTwoStrings() 的函数,这样的话代码的复用性就差一点。
如果用泛型就能解决这个问题:
// 定义一个交换两个变量的函数
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}
var numb1 = 100
var numb2 = 200
print("交换前数据: \(numb1) 和 \(numb2)")
swapTwoValues(&numb1, &numb2)
print("交换后数据: \(numb1) 和 \(numb2)")
var str1 = "A"
var str2 = "B"
print("交换前数据: \(str1) 和 \(str2)")
swapTwoValues(&str1, &str2)
print("交换后数据: \(str1) 和 \(str2)")
网友评论