1. 泛型函数
import Foundation
func swapTwoThings<T> (a: inout T, b: inout T) {
(a, b) = (b, a)
}
var a = 1
var b = 2
swapTwoThings(a: &a, b: &b)
a
b
var aa = "I love you"
var bb = "you love him"
swapTwoThings(a: &aa, b: &bb)
aa
bb
2. 泛型类型初体验
import Foundation
struct Stack<T> {
var items = [T]()
func isEmpty() -> Bool {
return items.isEmpty
}
mutating func push(item: T) {
items.append(item)
}
mutating func pop() -> T? {
guard !isEmpty() else {
return nil
}
return items.removeLast()
}
}
extension Stack {
var top: T? {
return items.last
}
}
var s = Stack<Int>()
s.isEmpty()
s.pop()
s.push(item: 2)
s.top
s.pop()
s.top
3. 尖括号里可以有多种类型
import Foundation
struct Pair<T1, T2> {
var a: T1
var b: T2
}
var pair = Pair<Int, String>(a: 2, b: "hahaha")
pair.a
pair.b