Si j'utilise un non scellé trait
ou abstract class
dans Scala et que j'utilise ensuite la correspondance de modèles, je me demande si le compilateur ne sait pas au moment de la compilation pour ce patternmatch particulier quelles implémentations possibles de ce trait / classe sont disponibles? Donc, si c'est le cas, ne pourrait-il pas donner des avertissements de correspondance de modèle même si le trait
/ abstract class
n'est pas scellé parce qu'il sait quels types pourraient être utilisés, en vérifiant toutes les dépendances / importations possibles?
Par exemple, si j'ai un Option[A]
et que je fais une correspondance de modèle uniquement pour Some[A]
mais pas pour None
, le compilateur se plaindra, car il Option
est scellé.
Si le compilateur ne peut pas savoir / résoudre cela, pourquoi ne le peut-il pas? Et si le compilateur (théoriquement) peut le faire, quelles sont les raisons pour lesquelles il n'est pas utilisé dans Scala? Y a-t-il d'autres langues qui prennent en charge ce type de comportement?
Foo
avec des sous A
- classes,, B
et C
, et toutes vos correspondances de modèle ne correspondent qu'à ces trois. Rien ne m'empêche d'ajouter une nouvelle sous D
- classe qui fera exploser vos correspondances de motifs.
java.lang.ClassLoader
.