Swift中的类型转换可以将一个类型的实例转换为另一个类型的实例。类型转换在 Swift 中使用 is 和 as 操作符实现。

  1. is 操作符用于检查一个实例是否属于某个类的实例或者是其子类的实例。它返回一个布尔值,如果实例属于指定的类型或者其子类类型,则返回 true;否则返回 false。

    class Animal {}
    class Dog: Animal {}
    
    let animal = Animal()
    let dog = Dog()
    
    print(animal is Animal) // true
    print(dog is Animal) // true
    print(animal is Dog) // false
    print(dog is Dog) // true
    
  2. as 操作符用于将一个实例转换为指定类型。如果转换成功,则返回转换后的实例;如果转换失败,则会触发运行时错误。as? 操作符用于将一个实例转换为可选类型,如果转换成功则返回可选类型的值,如果转换失败则返回 nil。

    class Animal {}
    class Dog: Animal {}
    
    let animal = Animal()
    let dog = Dog()
    
    let animal2 = dog as Animal // 向上转型,返回 Animal 类型的实例
    let dog2 = animal as? Dog // 向下转型,返回可选类型的 Dog 类型的实例
    
    print(animal2) // Animal()
    print(dog2) // nil
    
  3. as! 操作符用于将一个实例强制转换为指定类型。如果转换成功,则返回转换后的实例;如果转换失败,则会触发运行时错误。

    class Animal {}
    class Dog: Animal {}
    
    let animal = Animal()
    let dog = Dog()
    
    let animal2 = dog as! Animal // 向上转型,返回 Animal 类型的实例
    let dog2 = animal as! Dog // 向下转型,返回 Dog 类型的实例
    
    print(animal2) // Animal()
    print(dog2) // Dog()
    

注意:在进行类型转换之前,需要确保被转换的实例的类型是可以转换的,否则会导致运行时错误

Swift类型转换

原文地址: https://www.cveoy.top/t/topic/ihdF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录