Swift语法基础:6 - Swift的Protocol和Extensions
前面我们知道了枚举类型和结构体的声明, 嵌套, 以及基本的使用, 现在让我们来看看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
好了, 这次我们就讲到这里, 下次我们继续~~