Die schnelle Dokumentation besagt, dass Klassen , Strukturen und Aufzählungen alle Protokollen entsprechen können, und ich kann zu einem Punkt gelangen, an dem sie alle übereinstimmen. Aber ich kann die Aufzählung nicht dazu bringen , sich ganz wie die Klassen- und Strukturbeispiele zu verhalten :
protocol ExampleProtocol {
var simpleDescription: String { get set }
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.simpleDescription
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
enum SimpleEnum: ExampleProtocol {
case Base
var simpleDescription: String {
get {
return "A Simple Enum"
}
set {
newValue
}
}
mutating func adjust() {
self.simpleDescription += ", adjusted"
}
}
var c = SimpleEnum.Base
c.adjust()
let cDescription = c.simpleDescription
Ich habe nicht herausgefunden, wie ich das simpleDescription
durch einen Anruf ändern kann adjust()
. Mein Beispiel wird das natürlich nicht tun, weil der Getter einen fest codierten Wert hat, aber wie kann ich einen Wert für die festlegen, simpleDescription
während er noch dem entspricht ExampleProtocol
?