sorted(by:)
存在于所有序列上。您的特定案例需要bom,因此您需要约束到:
class func sortValues<S: Sequence>(_ values: S) -> [S.Element] where S.Element == Bom {
}
你也可以约束到
Collection
是的。
你也可以把这个扩展到
Sequence
或
收藏
物料清单:
extension Sequence where Element == Bom {
func sorted() -> [Bom] {
return self.sorted {
}
}
}
如果总是这样订购bom,您也可以考虑只生产bom
Comparable
,然后所有常规排序方法都将在所有序列上工作:
extension Bom: Comparable {
static func < (lhs: Bom, rhs: Bom) -> Bool {
if lhs.prop1 == rhs.prop1 {
if lhs.prop2 == rhs.prop2 {
if lhs.prop3 == rhs.prop3 {
return lhs.prop4 ?? "" < rhs.prop4 ?? ""
} else {
return lhs.prop3 ?? "" < rhs.prop3 ?? ""
}
} else {
return lhs.prop2 ?? "" < rhs.prop2 ?? ""
}
} else {
return lhs.prop1 < rhs.prop1
}
}
}