美文网首页
Swift协议和扩展(四)

Swift协议和扩展(四)

作者: chrisdev | 来源:发表于2018-11-17 02:09 被阅读0次

1. 协议, 协议可以看成一个类的需求清单, 类可以声明它们拥有这些属性和方法. 协议看起来和类非常相似, 只是没有提供任何实际的代码, 只是定义了类的属性和函数, 以及如何访问他们.

protocol Blinking {                                                //声明协议

        var isBlinking: Bool{    get    }                        //这个属性必须(至少是)可获取的

        var blinkSpeed: Double {    get set    }          //这个属性至少是可获取可设置的

        //这个函数必须存在, 做什么有实现者决定

        func startBlinking(blinkSpeed: Double) -> void

}

有了协议就可以创建遵循协议的类, 当一个类遵循了一个协议, 就要实现协议中所有的属性和方法. 除此之外还可以遵循多个协议, 使用协议的好处: 利用Swift类型体系, 可以引用任何遵循某一给定协议的对象. 因为只关注一个对象是否遵循协议时, 这个类的具体类型是无关紧要的.

class Light : Blinking {

        var isBlinking: Bool = false

        var blinkSpeed: Double = 0.0

        func startBlinking(blinkSpeed: Double) {

                println("I am now blinking");     isBlinking = true;

                self.blinkSpeed = blinkSpeed;

        }

}

var aBlinking : Blinking?            //可以是任何具有Blinking协议的对象

aBlinking = Light()

aBlinking?.startBlinking(4.0)    //在变量名后面加?: 尝试使用对象之前查看是否有值

2. 扩展, 在Swift中扩展可以增加更多方法和计算属性, 有点: 不必修改源码增加功能, 可以按功能划分到不同部分, 提高可读性. 可以扩展任何类型, 内置类型和自己编写的类. 要创建一个扩展, 可以使用extension关键字, 一旦扩展一个类型, 就可以调用已经增加的函数和属性,  注意: 在扩展一个类型时, 扩展中定义的函数和属性会增加到该类型的每个实例中.

extension Int {

        var doubled: Int {    return self * 2    }

        func multiplyWith(anotherNumber: Int) -> Int {    return self * anotherNumber    }

}

相关文章

  • Swift协议和扩展(四)

    1. 协议, 协议可以看成一个类的需求清单, 类可以声明它们拥有这些属性和方法. 协议看起来和类非常相似, 只是没...

  • Swift协议和扩展

    协议 与OC中一样,协议的关键字也是protocol在Swift中,class(类)、struct(结构体)、en...

  • swift —— 协议和扩展

    用 "protocol" 关键字来声明一个协议。例: 注:对于类如果方法中要修改 self;对于结构体,枚举,如果...

  • Swift:协议和扩展

    Protocols and Extensions github:Swift基础实例github:SwiftBasi...

  • Swift(九)协议和扩展

    更新:2018.05.24 整理了一下demo:SwiftDemo 扩展(Extension) Swift中,扩展...

  • Swift基础-协议和扩展

    协议 协议是描述某物必须具有的属性和方法的一种方式。然后,您可以告诉Swift哪些类型使用该协议-这一过程称为采用...

  • Swift的协议和扩展

    在扩展里添加协议遵循 你可以扩展一个已经存在的类型来采纳和遵循一个新的协议,就算是你无法访问现有类型的源代码也行。...

  • Swift3.0-协议和扩展

    用protocol 去声明协议。 一般情况下,值类型的实例方法不能修改它的属性。mutating(变异)加在方法前...

  • swift中的协议和扩展

    1.Swift中的Protocol 什么是Protocol? Protocol是Swift中的一种自定义类型,可以...

  • Swift 中的协议和扩展

    协议 协议的语法 自定义类型声明时,将协议名放在类型名的冒号之后来表示该类型采纳一个特定的协议。多个协议可以用都好...

网友评论

      本文标题:Swift协议和扩展(四)

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