noneを含めたOptionalのenumを比較するとき要注意
例:
enum Foo: String { case hoge case none } var a: Foo = .none print(a == .none) // true var b: Foo? = Foo.none print(b == .none) // false
こうなる理由は:
後者の`.none`がOptionalタイプの.noneになっている。
要するにnilだ。
print(nil == .none) // true
こういうのを防ぐために、ちゃんとunwrapするか、または.noneの前ちゃんとenum名前をつける。
var b: Foo? = Foo.none print(b == Foo.none) // true print(b! == .none) // true