Swift2.2 学习笔记(六) ___接口和扩展

来源:互联网 发布:淘宝链接e22a 编辑:程序博客网 时间:2024/04/30 15:24

使用protocol来声明一个借口

protocol ExampleProtocol {    var simpleDescription: String { get }    mutating func adjust()}

类,枚举和结构都可以实现接口

class SimpleClass: ExampleProtocol {    var simpleDescription: String = "A very simple class."    var anotherProperty: Int = 69105    func adjust() {        simpleDescription += "Now 100% adjusted."    }}var a = SimpleClass()a.adjust()let aDescription = a.simpleDescriptionstruct SimpleStructure:ExampleProtocol {    var simpleDescription:String = "A simple structure"    mutating func adjust() {        simpleDescription += "(adjusted)"    }}var b = SimpleStructure()b.adjust()let bDescription = b.simpleDescription - 声明 SimpleStructure 时候 mutating 关键字来标记一个会修改结构体的方法。SimpleClass的声明需不要标记任何方法因为类中的方法会经常修改。  - 使用 extension来为现有的类型添加功能,必须添加一个计算机属性的方法。可以使用扩展来给任意类型添加协议,甚至是你从外部库或者框架中导入的类型。
extension Int: ExampleProtocol {    var simpleDescription: String {        return "The number \(self)"    }    mutating func adjust() {        self += 42    }}print(7.simpleDescription)

可以使用其它命名类型一样使用接口名 – 列如,创建一个有不同类型但是都实现一个借口的对象集合。当处理类型是借口的值时,接口外定义方法不可用。

let protocolValut: ExampleProtocol = aprotocolValut.simpleDescription

即使protocolValut 变量运行时的类型是simpleClass,编译器会把它的类型当做ExampleProtocol。这表示你不能调用类在它实现的接口之外实现的方法或者属性。

0 0
原创粉丝点击