swift从入门到精通17-扩展

217 阅读1分钟

1.Extension

  • 拓展可以为枚举、结构体、类、协议添加新功能
  • 可以添加方法,属性,协议,下标,初始化器等
  • 不能覆盖原有的功能,不能添加存储属性,不能添加父类,不能添加指定初始化器

2.计算属性例子

extension Double {
    var km: Double { self * 1000.0}
    var m: Double {self}
    var cm: Double {self / 100.0}
}


var d = 10.0
print(d.km)
print(d.m)
print(d.cm)

3.方法例子

extension Int {
    func square() -> Int {
        self * self
    }
}


print(5.square())

4.初始化器例子

struct Point {
    var x: Int = 0
    var y: Int = 0
}


extension Point {
    init(point: Point) {
        self.init(x: point.x,y: point.y)
    }
}


var p1 = Point(x: 5, y: 10)
var p2 = Point(point: p1)
print(p2)

5.泛型例子

class Class1<E> {
    var elemenets = [E]()
    func push(_ e: E) {
        elemenets.append(e)
    }
}


extension Class1 {
    func pop() -> E {
        elemenets.removeLast()
    }
}

6.协议例子

protocol Protocol1 {
    func text1()
}


extension Protocol1 {
    func text1() {
           print("Protocol1 text1")
       }
    func text2() {
        print("Protocol1 text2")
    }
}


class Class2: Protocol1 {
    func text1() {
        print("Class2 text1")
    }
    
    func text2() {
          print("Class2 text2")
      }
}


var c2 = Class2()
c2.text1()
c2.text2()


var c3:Protocol1 = Class2()
c3.text1()
c3.text2()


上一篇文章:swift从入门到精通16-泛型

下一篇文章:swift从入门到精通18-访问控制和内存管理