如何修改enum (Swift)中参数的值



和大家一样,我也是Swift的新手。我不知道如何在enum中改变参数,在它创建之后。所以。有SimpleProtocol和SimpleEnum,它们符合这个协议。

//SimpleProto goes here
    protocol ExampleProtocol { 
    var simpleDescription: String { get }
    mutating func adjust()
}
//And SimpleEnum goes here
enum SimpleEnum : ExampleProtocol {
    case first(Int)
    case second(Int)
    case third(Int)
    var simpleDescription: String {
    get {
        var begining = "This is SimpleEnum with arg value : "
        switch self {
        case let .first(arg):
            begining += "One"
        case let .second(arg):
            begining += "Two"
        case let .third(arg):
            begining += "Three"
        }
        return begining
    }
    }
    mutating func adjust() {
        //here i want to increase the value of enum's parameter on five
    }
}

我确实能想出一个解决办法,但我觉得不够好。主要思想是用增加的值重新创建self:

case let .first(arg):
self = SimpleEnum.first(arg + 5)

任何想法?

不要将枚举视为可变类型。你会更快乐。在adjust函数中,只返回一个新的enum值:

enum SimpleEnum {
  ...
  func adjust() -> SimpleEnum {
    switch self {
      case let .first(arg):
        return .first(arg + 5)
      case let .second(arg):
        return .second(arg + 5)
      case let .third(arg):
        return .third(arg + 5)
    }
  }
}

最新更新