Se uso un un seal traito abstract classin Scala e poi uso pattern matching, mi chiedo, il compilatore non sa al momento della compilazione per questo particolare patternmatch quali possibili implementazioni di questo tratto / classe sono disponibili? Quindi, in caso affermativo, non potrebbe dare avvisi di corrispondenza del modello anche se il trait/ abstract classnon è sigillato perché sa quali tipi potrebbero essere usati, controllando tutte le possibili dipendenze / importazioni?
Ad esempio se ho un Option[A]e faccio pattern matching solo per Some[A]ma non per None, il compilatore si lamenterà, perché Optionè sigillato.
Se il compilatore non può saperlo / risolverlo, perché non può? E se il compilatore (teoricamente) può farlo, quali sono i motivi per cui non viene utilizzato in Scala? Ci sono altre lingue che supportano quel tipo di comportamento?
Foocon sottoclassi A, Be C, e tutte le tue corrispondenze di pattern corrispondono solo a quelle tre. Niente mi impedisce di aggiungere una nuova sottoclasse Dche farà esplodere le tue combinazioni di schemi.
java.lang.ClassLoader.