编辑代码

/*1使用protocol来声明一个协议*/
protocol ExampleProtocol {
    var simpleDescription: String {get}
    mutaing func adjust()
}

/*练习:写一个实现这个协议的枚举*/
class SimpleClass: ExampleProtocol {
    var simpleDescription: String = "A very simple calss."
    var anotherProperty: Int = 69105
    func adjust() {
        simpleDescription += " Now 100% adjusted."
    }
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription

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

/*3*/
extension Int: ExampleProtocol {
    var simpleDescription: String {
        return "The number \(self)"
    }
    mutating func adjust() {
        self += 42
    }7
}
print(7.simpleDescription)

/*4*/
let protocolValue: ExampleProtocol = a
print(protocolValue.simpleDescription)
//print(protocolValue.anotherProperty)  // Uncomment to see the error