多くのコードの重複に頼らずに、異なるenumをセットにグループ化して相互メンバーシップをテストする良い方法はありますか?私は.coldBeverage
を得るときたとえば列挙型セットの相互メンバーシップをテストする最良の方法
は、以下、私が[.cola, .milk, .wine]
を取得し、私は.cola
、.milk
、または.wine
のいずれかを取得する場合も同様に、私は.coldBeverage
を取得します。
enum BeverageType {
case coldBeverage
case hotBeverage
}
enum Beverage {
case cola
case milk
case wine
case coffee
case tea
case hotChocolate
}
もちろん、私は常に各列挙型にvarを作成し、それぞれの型の相互関係を入力できます。他の構造があれば興味がありました。あなたが列挙型のいずれかで静的辞書を使用して重複を避けることができ
extension BeverageType {
var associatedBeverages: [Beverage] {
switch self {
case .coldBeverage:
return [.cola, .milk, .wine]
case .hotBeverage:
return [.coffee, .tea, .hotChocolate]
}
}
}
extension Beverage {
var beverageType: BeverageType {
switch self:
case .cola:
return .coldBeverage
case .milk:
return .coldBeverage
//etc...
}
}
多分関連します。http:/ /stackoverflow.com/questions/36819163/optionsettype-and-enums –