Disons que nous avons un protocole défini comme:Étendre un protocole avec associatedtype générique
protocol PAT {
associatedtype Element
}
et j'ai aussi un ENUM (typique Résultat) défini comme:
enum Result<Value> {
case success(Value)
case error(Error)
}
Maintenant, je veux ajouter une extension à PAT
lorsque Element
est Result<Value>
mais le compilateur ne peut pas déterminer Value
et déclenche donc une erreur de compilation indiquant "référence à l'argument générique".
est ici le code de l'extension:
extension Pat where Element == Result {
}
Bonne question. Je pense qu'il est possible de faire 'où Element == Résultat' ou quelque chose, mais je ne suis pas sûr qu'il soit possible de le faire pour n'importe quel type de résultat tout en restant générique sur la valeur. Une option serait de rendre le résultat conforme à un autre protocole, alors vous pourriez dire 'where Element: OtherProto'. –
jtbandes
@jtbandes Yep 'Résultat' fonctionne, mais se conformer à un autre protocole ne fonctionne pas non plus. Je veux dire que cela fonctionne dans certains cas, mais cela ne fonctionnera pas si vous utilisez des méthodes ou des variables avec 'Value'. ça va: "La valeur ne peut être utilisée que comme paramètre concret ou générique" –
farzadshbfn
Que voulez-vous faire exactement dans l'extension? – jtbandes