Se eu usar um un selado trait
ou abstract class
no Scala e depois usar a correspondência de padrões, será que o compilador não sabe em tempo de compilação para essa correspondência de padrão específica que implementações possíveis dessa característica / classe estão disponíveis? Portanto, se isso acontecer, não poderia dar avisos de correspondência de padrão, mesmo que o trait
/ abstract class
não esteja selado porque ele sabe quais tipos podem ser usados, verificando todas as dependências / importações possíveis?
Por exemplo, se eu tenho uma Option[A]
correspondência de padrões e faço apenas para Some[A]
mas não para None
, o compilador irá reclamar, porque Option
está selado.
Se o compilador não pode saber / resolver isso, por que não pode? E se o compilador (teoricamente) puder fazer isso, quais são as razões para isso não ser usado no Scala? Existem outros idiomas que suportam esse tipo de comportamento?
Foo
com subclasses A
, B
e C
, e todos os seus jogos padrão de correspondência apenas aqueles três. Nada me impede de adicionar uma nova subclasse D
que exploda suas correspondências de padrões.
java.lang.ClassLoader
.