• Swift 扩展


    前言

    • 扩展就是给一个现存类、结构体、枚举或者协议添加新的属性或者方法,无需修改目标的源代码,就可以把想要的代码加到目标上面。

      • 扩展可以用来扩展现有类型的计算属性、构造器、方法和下标。
      • 不能添加一个已经存在的方法或者属性。
      • 添加的属性不能是存储属性,只能是计算属性。
    • 在定义扩展时,在类型名前使用关键字 extension

      extension 某个现有类型 {
          
          // 增加新的功能
      }
      

    1、扩展计算属性

    • 扩展计算属性

      class Transport {
      
          var scope: String
      
          init(scope: String) {
              self.scope = scope
          }
      }
      
      extension Transport {
      
          // 扩展计算属性
          var extProperty: String {
          
              get {
                  return scope
              }
          }
      }
      
      var myTrans = Transport(scope: "ludi")
      print(myTrans.extProperty)                          // ludi
      

    2、扩展构造器

    • 扩展构造器

      class Transport {
      
          var price = 30
      
          var scope: String
      
          init(scope: String) {
              self.scope = scope
          }
      }
      
      extension Transport {
      
          // 扩展构造器
          convenience init(price: Int, scope: String) {
          
              self.init(scope: scope)
              self.price = price
          }
      }
      
      var myTra1 = Transport(price: 50, scope: "ludi")    // 使用扩展构造器,价格为 50
      var myTra2 = Transport(scope: "haiyang")            // 使用原构造器,介个属性的值仍为 30
      

    3、扩展方法

    • 使用扩展增加方法的做法非常灵活,除了可在自定义的类中扩展方法外,还可以扩展基本数据类型的方法,比如扩展整数类型。

      // 扩展基本数据类型
      extension Int {
      
          func calculate() -> Int {
              return self * 2
          }
      }
      
      var i = 3
      i.calculate()       // 6    
      

    4、扩展下标

    • 扩展下标

      extension Int {
      
          // 扩展下标
          subscript(num: Int) -> Int {
              return self * num
          }
      }
      
      var i = 3
      i[2]                    // 6
      

    5、扩展协议

  • 相关阅读:
    类特性:多态
    类特性:继承
    类,对象入门
    cf round599 CDE
    cf round#598 CDEF
    高精度小数BigDecimal+二分——java
    点分治
    java——IO(普通文件,二进制文件,压缩文件 )
    JCF——Map
    JCF——set
  • 原文地址:https://www.cnblogs.com/QianChia/p/8655153.html
Copyright © 2020-2023  润新知