类 / 继承

class Vehicle { }

class CarVehicle {
    func test() {
        print("test Car \(self)")
    }
}

func example() {
    let cars = [Car(), Car()]
    test(vehicles: cars)

}

func test(vehicles: [Vehicle]) {
    switch vehicles {
        case let cars as [Car]:
        for car in cars {
            car.test()
        }
        default:
        print("Nothing to test!")
    }
}


Before Swift 5.8 that would have led to the error message, “Collection downcast in cast pattern is not implemented; use an explicit downcast to '[Car]' instead.”