Je suis un peu bloqué en essayant de définir un conteneur pour mes éléments ui.génériques struct implémentant le protocole avec le type associé
Comme je voulais quelque chose qui encapsule une étiquette non unique, une valeur qui peut être un objet comparable et un concept d'être l'option préférée, je suis venu avec le protocole suivant:
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)
}
}
Maintenant, je veux mettre en œuvre le protocole dans une structure générique et je ne peux pas comprendre comment. Ce que je veux faire est
struct Option<Key, Value>: OptionProtocol {
var key:Key
var value:Value
var main:Bool
}
Mais le compilateur se plaint que Type 'Option<Key, Value>' does not conform to protocol 'OptionProtocol'
Tout pointeur serait utile