Apple官方文档:
The Swift Programming Language
Protocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循ExampleProtocol协议:
在网上找了好久,都不知道怎样实现,最后参照一篇帖子( http://forums.macrumors.com/showthread.php?t=1740890),最终实现如下:
运行结果截图:
Protocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循ExampleProtocol协议:
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
在网上找了好久,都不知道怎样实现,最后参照一篇帖子( http://forums.macrumors.com/showthread.php?t=1740890),最终实现如下:
enum EnumConformToProtocol: ExampleProtocol {
case First(String), Second(String), Third(String)
var simpleDescription: String {
get {
switch self {
case let .First(text):
return text
case let .Second(text):
return text
case let .Third(text):
return text
default:
return "get error"
}
}
set {
switch self {
case let .First(text):
self = .First(newValue)
case let .Second(text):
self = .Second(newValue)
case let .Third(text):
self = .Third(newValue)
}
}
}
mutating func adjust() {
switch self {
case let .First(text):
self = .First(text + " (first case adjusted)")
case let .Second(text):
self = .Second(text + " (second case adjusted)")
case let .Third(text):
self = .Third(text + " (third case adjusted)")
}
}
}
var enumConformToProtocolTest = EnumConformToProtocol.First("FirstVal")
enumConformToProtocolTest.simpleDescription
enumConformToProtocolTest.adjust()
enumConformToProtocolTest.simpleDescription
enumConformToProtocolTest = EnumConformToProtocol.Third("ThirdVal")
enumConformToProtocolTest.simpleDescription
enumConformToProtocolTest.adjust()
enumConformToProtocolTest.simpleDescription
var e = EnumConformToProtocol.Second("Hello")
var text = e.simpleDescription
e.simpleDescription = "Adios"
text = e.simpleDescription
e.adjust()
text = e.simpleDescription
运行结果截图: