0
我有點卡住試圖爲我的UI元素定義一個容器。泛型結構實現協議與關聯的類型
正如我想要的東西,它封裝了一個非唯一的標籤,一個值,可以是任何可比的對象,被優先選擇的一個概念,我想出了以下協議:
protocol OptionProtocol:Comparable {
associatedtype Key:Comparable
associatedtype Value:Comparable
var key:Key { get set }
var value:Value { get set }
var main:Bool { get set }
static func <(lhs: Self, rhs: Self) -> Bool
static func ==(lhs: Self, rhs: Self) -> Bool
}
extension OptionProtocol {
static func <(lhs: Self, rhs: Self) -> Bool {
let equalKeys = lhs.key == rhs.key
return equalKeys ? lhs.value < rhs.value : lhs.key < rhs.key
}
static func ==(lhs: Self, rhs: Self) -> Bool{
return (lhs.value == rhs.value) && (lhs.key == rhs.key)
}
}
現在我想在通用結構中實現協議,我不知道如何。我想要做的就是
struct Option<Key, Value>: OptionProtocol {
var key:Key
var value:Value
var main:Bool
}
但是,編譯器抱怨Type 'Option<Key, Value>' does not conform to protocol 'OptionProtocol'
任何指針將是有益的