加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift语法基础:6 - Swift的Protocol和Extensions

发布时间:2020-12-14 02:20:00 所属栏目:百科 来源:网络整理
导读:前面我们知道了枚举类型和结构体的声明,嵌套,以及基本的使用,现在让我们来看看Swift中的另外两个,一个是Protocol(协议),一个是Extensions(类别): 1.声明Protocol protocol ExampleProtocol{ var simpleDescription: String { get } mutating func adjust()}

前面我们知道了枚举类型和结构体的声明,嵌套,以及基本的使用,现在让我们来看看Swift中的另外两个,一个是Protocol(协议),一个是Extensions(类别):


1.声明Protocol

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

PS: 在声明协议的时候,如果你要修改某个方法属性,你必须的在该方法前加上mutating这个关键字,否则不能修改.


2.使用Protocol

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.simpleDescription
println(aDescription)
// 打印出来的结果是: A very simple class. Now 100% adjusted.

同样的,在结构体里一样可以使用,但是必须的加上mutating:

struct SimpleStructure:ExampleProtocol {
    var simpleDescription: String = "A simple structure."
    mutating func adjust() {
        simpleDescription += " (adjusted)"
    }
}

var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
println(bDescription)
// 打印出来的结果是: A simple structure. (adjusted)

Protocol也可以这么使用:

let protocolValue:ExampleProtocol = a
println(protocolValue.simpleDescription)
// 打印出来的结果:A very simple class. Now 100% adjusted.

PS: 这里的a是前面例子里面的a.


3.声明Extensions

extension Int: ExampleProtocol {
    var simpleDescription: String {
        return "The number (self)"
    }
    mutating func adjust() {
        self += 42
    }
}
var ext = 7.simpleDescription
println(ext)
// 打印出来的结果: The number 7

好了,这次我们就讲到这里,下次我们继续~~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读