美文网首页
Swift5.1类型转换&扩展

Swift5.1类型转换&扩展

作者: 037e3257fa3b | 来源:发表于2020-09-22 15:29 被阅读0次

    18.类型转换

    • 类型检查

      类型检查:用类型检查操作符( is )来检查一个实例是否属于特定子类型。若实例属于那个子类型,类型检查操作符返回 true ,否则返回 false 。
      
      
      向下转型:某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试 用类型转换操作符( as? 或 as! )向下转到它的子类型。因为向下转型可能会失败,类型转型操作符带有两种不同形式。条件形式 as? 返回⼀个你试 图向下转成的类型的可选值。强制形式 as! 把试图向下转型和强制解包转换结果结合为一个 操作。
      
      
    • Any 和 AnyObject 的类型转换

      //Swift 为不不确定类型提供了了两种特殊的类型别名:
      - Any 可以表示任何类型,包括函数类型。 
      - AnyObject 可以表示任何类类型的实例。
      
      Any 类型可以表示所有类型的值,包括可选类型。Swift 会在你用 Any 类型来表示一个可选值的时候,给你一个警告。如果你确实想使用 Any 类型来承载可选值,你可以使用 as 操作符显式转换为 Any ,如下所示:
      let optionalNumber: Int? = 3 things.append(optionalNumber) things.append(optionalNumber as Any) // 没有警告
      

    19.嵌套类型

    20.扩展

    扩展可以给一个现有的类,结构体,枚举,还有协议添加新的功能。但是不能重写已经存在的功能。
    Swift 中的扩展可以:
      添加计算型实例例属性和计算型类属性
      定义实例方法和类方法
      提供新的构造器器
      定义下标
      定义和使用新的嵌套类型 
      使已经存在的类型遵循(conform)一个协议
      
    1.语法
    - 使⽤ extension 关键字声明扩展:
    extension SomeType {
        // statements
    }
    - 扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样:
    extension SomeType: SomeProtocol, AnotherProtocol { 
        // 协议所需要的实现写在这⾥里里
    }
    
    2.计算型属性
    扩展可以给现有类型添加计算型实例例属性和计算型类属性。但是它们不能添加存储属性,或向现有的属性添加属性观察者。
    

    相关文章

      网友评论

          本文标题:Swift5.1类型转换&扩展

          本文链接:https://www.haomeiwen.com/subject/vdmwyktx.html