1
我想弄清楚如何使用在另一個協議內部具有自我或相關類型需求的協議。請看下面的例子:在另一個通用協議類型中使用通用協議類型
protocol SortBy {
static var values: [Self] { get }
var title: String { get }
}
protocol Filter {
var sortBy: SortBy { get set }
init(_ filter: Self)
static func == (lhs: Self, rhs: Self) -> Bool
static func != (lhs: Self, rhs: Self) -> Bool
}
我知道,因爲SortBy
包含Self
一個參考,我只能把它作爲一個通用的約束。我不知道的是,如果有什麼Swift魔法可以讓我試圖達到目標?
最後,我想用協議爲例說明如下:
enum Sort: SortBy {
case sort1
case sort2
static var values: [Sort] {
return [
.sort1,
.sort2
]
}
var title: String {
switch self {
case .sort1:
return "Sort 1"
case .sort2:
return "Sort 2"
}
}
}
struct FilterExample: Filter {
var sortBy: SortBy
init(_ filter: FilterExample) {
...
}
static func == (lhs: FilterExample, rhs: FilterExample) -> Bool {
...
}
static func != (lhs: FilterExample, rhs: FilterExample) -> Bool {
...
}
}
而如果它的事項,我用斯威夫特3.
感謝提前的幫助。
謝謝,就是這樣。 – RPK