Swift 类型转换 (as as! as? 区别)

2019-08-26  本文已影响0人  1剑天下

Swift 语言中类型转换使用的关键字是as,与类型检查相似,Swift语言中的类型转换有向上兼容向下转换之分,也就是as,as?/as!的区别

as as! as? 的区别

例:

定义三个类 :"人(Person)" "学生(Student)" "教师(Teacher)",Person做为Student和Teacher的基类


// 定义人员基类 
class Person {
    var name : String
    
    init(_ name: String){
        self.name = name
    }
}

// 定义学生类
class Student : Person {
}

// 定义教师类
class Teacher : Person {
}

as: 是向上转换,转换成基类
        let student = Student("name")
        let person = student as Person
        print(person)
        
      //   let tearcher = person as Teacher  // 报错
as?是向下转化,转化成自己的派生类,转换失败返回nil
  let person2:Person = Teacher("LXW")
        
        let tearcher2 = person2 as? Teacher
        if let teamTearchers = tearcher2{
            print(teamTearchers)
        }
as! 和as?的转换模式相同,不同之处是转换失败会报错,是强制转换,确保100%会成功的转换则可使用 as!,否则使用 as?
 let tearcher3 = person2 as! Teacher

应用场景

let num1 = 42 as Double
        print(num1)
        //switch 语句中进行模式匹配
        switch num1 {
        case let num1 as Float:
            print("这是Folat")
        case let num1 as Double:
            print("这是Double")
        default:
            print("转换时报")
        }
上一篇 下一篇

猜你喜欢

热点阅读