Jeśli używam un uszczelniony trait
lub abstract class
w 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 class
nie 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ż Option
jest 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?
Foo
z podklas A
, B
i C
, i wszystkie swoje mecze wzór pasuje tylko te trzy. Nic nie powstrzymuje mnie przed dodaniem nowej podklasy, D
która wysadzi twoje pasujące wzory.
java.lang.ClassLoader
.