Swift Switch case “not”

前端 未结 2 1107
暖寄归人
暖寄归人 2020-12-19 19:21

I\'ve got two enums:

public enum ServerState {
  case Connecting
  case Open
  case LoggedIn
  case Closed
  case Error(NSError)
}

enum TransportLayerState          


        
2条回答
  •  抹茶落季
    2020-12-19 19:43

    One possible answer I found was to make TransportLayerState equatable. In that case I could do this:

    switch serverState {
    case .Connecting where tlState != .Connecting: return false
    case .Closed where tlState != .Disconnected(nil): return false
    case let .Error(err) where tlState != .Diconnected(err): return false
    ...
    default: return true
    }
    

    I do end up having to write a bit of code in TransportLayerState enum to make it equatable, so not sure if it's worth the effort, but it does work.

提交回复
热议问题