第二十一节 Swift 中的泛型

2020-07-15  本文已影响0人  码客南君

如果要写可复用的函数和类型,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)")
上一篇 下一篇

猜你喜欢

热点阅读