如果我有
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中,您可以将操作员过载置于分机的内部。