Jeśli używam un uszczelniony traitlub abstract classw Scala, a następnie użyć dopasowywania wzorców, zastanawiam się, czy kompilator nie wiedzieć w czasie kompilacji dla tego konkretnego patternmatch co możliwe implementacje tej cechy / klasy są dostępne? Więc jeśli tak, to czy nie może dać ostrzeżeń o dopasowaniu wzorca, nawet jeśli trait/ abstract classnie jest zapieczętowane, ponieważ wie, które typy mogą być użyte, sprawdzając wszystkie możliwe zależności / import?
Np. Jeśli mam Option[A]i wykonuję dopasowanie wzorca tylko dla, Some[A]ale nie dla None, kompilator będzie narzekał, ponieważ Optionjest zapieczętowany.
Jeśli kompilator nie może tego wiedzieć / rozwiązać, dlaczego nie może? A jeśli kompilator (teoretycznie) może to zrobić, jakie są przyczyny tego, że nie jest używany w Scali? Czy istnieją inne języki, które wspierają takie zachowanie?
Fooz podklas A, Bi C, i wszystkie swoje mecze wzór pasuje tylko te trzy. Nic nie powstrzymuje mnie przed dodaniem nowej podklasy, Dktóra wysadzi twoje pasujące wzory.
java.lang.ClassLoader.