の比較しますか?あなたの実装でその事実を使用することができますので、あなただけのTransformState
は、ネストされた列挙型
TransformState.ErrorState
ためEquatable
を実装する必要が
の比較しますか?あなたの実装でその事実を使用することができますので、あなただけのTransformState
は、ネストされた列挙型
TransformState.ErrorState
ためEquatable
を実装する必要が
は、自由のためにそれを取得します:スウィフト3.0に、あなたができるようになりますことを
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
}
}
注意をエクステンションの本体の中にオペレータの過負荷をかける。
ネスト列挙型TransformState. ErrorState
が等しいため、問題はthe thread shown by JALと非常によく似ています。あなたの列挙のため
func == (lhs: TransformState, rhs: TransformState) -> Bool {
switch (lhs, rhs) {
case (.Default, .Default):
return true
case (.Error(let state1), .Error(let state2)):
return state1 == state2
default:
return false
}
}
var currentState: TransformState = .Default
var state = TransformState.Error(.Custom)
print(state == currentState) //->false
currentState = .Error(.Custom)
print(state == currentState) //->true
オーバーライド==
:
自分==
などを書くことができます。
func ==(lhs: TransformState, rhs: TransformState) -> Bool {
switch (lhs, rhs) {
case (.Default, .Default):
return true
case (.Error(.Custom), .Error(.Custom)):
return true
case (.Error(.Default), .Error(.Default)):
return true
default:
return false
}
}
あなたの列挙型に '=='をオーバーライドします。 [関連する値を持つスウィフト列挙型の等価性をテストする方法]の可能な複製(http://stackoverflow.com/questions/24339807/how-to-test-equality-of-swift-enums-with-associated-values) – JAL
@ JAL私はその質問を見ました。私の場合、それはネストされたenumですので、私はまだ混乱していました。 – natecraft1