枚举 – 如何使枚举符合Swift中的协议?

枚举 – 如何使枚举符合Swift中的协议?,第1张

概述Swift文档说,类,结构和枚举都可以符合协议,我可以达到它们都符合的点。但我不能让枚举的行为很像类和结构的例子: protocol ExampleProtocol { var simpleDescription: String { get set } mutating func adjust()}class SimpleClass: ExampleProtocol { Swift文档说,类,结构和枚举都可以符合协议,我可以达到它们都符合的点。但我不能让枚举的行为很像类和结构的例子:
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.simpleDescriptionstruct SimpleStructure: ExampleProtocol {    var simpleDescription: String = "A simple structure"    mutating func adjust() {        simpleDescription += " (adjusted)"    }}var b = SimpleStructure()b.adjust()let bDescription = b.simpleDescriptionenum SimpleEnum: ExampleProtocol {    case Base    var simpleDescription: String {        get {            return "A Simple Enum"        }        set {            newValue        }    }    mutating func adjust() {        self.simpleDescription += ",adjusted"    }}var c = SimpleEnum.Basec.adjust()let cDescription = c.simpleDescription

我还没有想出如何获得simpleDescription改变调用adjust()的结果。我的例子显然不会这样做,因为getter有一个硬编码的值,但是如何为simpleDescription设置一个值,同时仍然符合ExampleProtocol?

这是我的尝试:
protocol ExampleProtocol {    var simpleDescription: String { get }    mutating func adjust()}enum ExampleEnum : ExampleProtocol {    case Base,Adjusted    var simpleDescription: String {        return self.getDescription()    }    func getDescription() -> String {        switch self {        case .Base:            return "A simple description of enum"        case .Adjusted:            return "Adjusted description of enum"        }    }    mutating func adjust() {        self = ExampleEnum.Adjusted    }}var c = ExampleEnum.Basec.adjust()let cDescription = c.simpleDescription
总结

以上是内存溢出为你收集整理的枚举 – 如何使枚举符合Swift中的协议?全部内容,希望文章能够帮你解决枚举 – 如何使枚举符合Swift中的协议?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060096.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存