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
への参照が含まれているので、私は唯一の一般的な制約として、それを使用することができることを知っています。私が知りたくないことは、私が達成しようとしていることを許すためにできるスウィフトマジックがあるかどうかです。次のように
は最終的に私は、たとえばプロトコルを使用したい:
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