如果我有

var currentState: TransformState = .Default
enum TransformState {
    case Default
    case Error(ErrorState)

    enum ErrorState {
        case Custom
        case Default
    }
}

var state = TransformState.Error(.Custom)

如何检查state == currentState

最佳答案

您只需要为Equatable实现TransformState
TransformState.ErrorState免费获取,因此您可以在实现中使用该事实:

extension TransformState: Equatable {}
func ==(lhs: TransformState, rhs: TransformState) -> Bool {
    switch (lhs, rhs) {
    case (.Default, .Default):
        return true

    case let (.Error(lhsErrorState), .Error(rhsErrorState)):
        return lhsErrorState == rhsErrorState

    default:
        return false
    }
}

请注意,在Swift 3.0中,您可以将操作员过载置于分机的内部。

10-02 03:12