スウィフトの列挙型をその定義順で比較する方法に関するドキュメントを見つける/理解するのが難しかった。私のようなスウィフト列挙の順序と比較
enum EnumType {
case First, Second, Third
}
スウィフトは、私が直接順序で列挙型を比較することはできません
、など
let type1 = EnumType.First
let type2 = EnumType.Second
if type1 < type2 {println("good")} // error
が、それはコンパイルエラーが発生列挙を作成するときに具体的に、「引数リストで 『<』を呼び出すことはできませんタイプ{EnumType、EnumType}のの。私が見つけた唯一の解決策は、これはすべてが順調である
enum EnumType : Int {
case First = 0, Second, Third
}
func <(a: EnumType, b: EnumType) -> Bool {
return a.rawValue < b.rawValue
}
let type1 = EnumType.First
let type2 = EnumType.Second
if type1 < type2 {println("good")} // Returns "good"
として過負荷、と私自身の比較演算子を書くことですのでアプリケーションで多くの使用と価値を持っている "重量のある"列挙型には適していますが、私が使用したいと思うかもしれないすべての演算子のオーバーロードは、軽量の列挙型のために過度に負担になります。単一の小さなモジュールの定数。
私のプロジェクトで定義するすべての列挙型の定型的なオーバーロードコードをたくさん書かずにこれを行う方法はありますか?さらに、Swiftが関連型を持たない単純な列挙型の比較演算子を自動的に提供するように、欠けているものがあります。タイプされていないか、Intとして型付けされていますか? SwiftはIntsを比較する方法を知っているので、なぜenum Intsを比較できないのですか?
[この回答](http://stackoverflow.com/a/27094973/148357)で説明されているように、「hashValue」プロパティを使用できます。最後の文を必ず読んでください:) – Antonio