4 votes

Equatable" ne peut pas être automatiquement synthétisé dans une extension.

Ça marche :

// Conformance to protocol correctly synthesized by compiler 
struct MyStruct: Equatable { 
}

Ce n'est pas le cas :

struct MyStruct { 
}
// Doesn't work, even though the extension is in the same file
extension MyStruct: Equatable {
}

L'erreur est très claire :

L'implémentation de 'Equatable' ne peut pas être automatiquement synthétisée dans une extension.

Ma préoccupation est que selon la proposition de Swift SE-0185 cela devrait être autorisé :

SE-0185 : Synthèse Equatable y Hashable conformité

Les utilisateurs doivent opter pour la synthèse automatique en déclarant leur type en tant que Equatable o Hashable sans mettre en œuvre aucune de leurs exigences. Cette conformité doit faire partie de la déclaration de type originale. ou dans une extension dans le même fichier (pour s'assurer que les membres privés et fileprivate sont accessibles depuis l'extension).

Il est dit que cela a été implémenté dans Swift 4.1 ( pomme/swift#9619 ).

Cependant, lorsque j'essaie de compiler, j'obtiens l'erreur indiquée précédemment. J'utilise Ubuntu 16.04, il échoue avec les deux versions de swift que j'ai :

  • Swift version 4.1-dev (LLVM 260a172ffb, Clang cd84be6c42, Swift 05b1b2be7c)
  • Swift version 4.2-dev (LLVM d30879863e, Clang 041fd44ebe, Swift b08fb12358)

Est-ce que j'ai manqué quelque chose ?

2voto

R.B. Points 362

Bonne nouvelle

L'instantané dev. le plus récent du 5 juin 2018 fonctionne comme prévu :


Mauvaise nouvelle

La version la plus récente de -release-. 4.1.2 ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X