编辑代码

//泛型函数
func swap2Int( a : inout Int, b : inout Int) {
    let temp = a
    a = b
    b = temp
}
var a = 3
var b = 5
swap(&a, &b)
print("a is \(a), b is \(b)")
func swap2String( a : inout String, b : inout String) {
    let temp = a
    a = b
    b = temp
}
var c = "Hello"
var d = "world"
print("\(c) \(d)")
swap(&c, &d)
print("\(c) \(d)")
print("a is \(a), b is \(b)")
print("c is \(c), d is \(d)")
func swap2Element<T>( a : inout T, b : inout T){
    let temp =  a
    a =  b
    b = temp
}
swap2Element(a: &a, b: &b)
swap2Element(a: &c, b: &d)
print("a is \(a), b is \(b)")
print("c is \(c), d is \(d)")
//泛型类
class Car {
    var brand: String
    init(brand: String) {
        self.brand = brand
    }
}
class Bike {
    var speed: Int
    init(speed: Int) {
        self.speed = speed
    }
}
class Driver<Vehicle> {
    var name: String
    var vehicle: Vehicle
    init(name: String, vehicle: Vehicle) {
        self.name = name
        self.vehicle = vehicle
    }
}
let porscheCar = Car(brand: "Porsche")
let driverTom = Driver(name: "Tom", vehicle: porscheCar)
let giantBike = Bike(speed: 50)
let driverSam = Driver(name: "Sam", vehicle: giantBike)