【发布时间】:2021-02-25 05:44:03
【问题描述】:
我想实现一个通用结构来处理许多属性。这些属性(质量、缺陷......)中的每一个都是枚举数组,都符合 Options 协议。 当我声明 OptionType 符合 Options 协议并因此符合 RawRepresentable 时,我很难理解错误,更一般地说,我很难理解如何管理通用枚举类型。 欢迎任何指导!
非常感谢, 乔
struct Property<OptionType: Options> {
var options: [OptionType]
var label: String {
"\(OptionType.Type.self)"
}
var allSortedOptions: [OptionType] {
let allOptions = OptionType.allCases as! [OptionType]
return allOptions.sorted(by: {$0.rawValue < $1.rawValue})
//Won't compile: Binary operator '<' cannot be applied to two 'OptionType.RawValue' operands
}
}
protocol Options: CaseIterable, RawRepresentable {}
extension Options {}
enum OptionQualities: String, Options {
case polite, handsome, smart, funny, enjoyable, articulated
}
enum OptionFlaws: String, Options {
case lazy, chatty, oftenLate, dirty, agressive, complaining
}
【问题讨论】:
-
排序后的预期顺序是什么?字典顺序?
-
我认为是按字母顺序排列的。这是我不使用泛型时得到的。