Якщо я використовую ип запечатаний trait
або abstract class
в Scala , а потім використовувати пошук по шаблоном, цікаво, це компілятор не знає під час компіляції для цієї конкретної patternmatch , які можливих реалізацій цієї ознаки / класу доступні? Отже, якщо це так, чи не може він подавати попередження відповідності шаблону, навіть якщо trait
/ abstract class
не запечатано, тому що він знає, які типи можна використовувати, перевіривши всі можливі залежності / імпорт?
Наприклад, якщо у мене є Option[A]
і я збігаю шаблони тільки для, Some[A]
але не для None
, компілятор поскаржиться, оскільки Option
це запечатано.
Якщо компілятор не може це знати / вирішити, то чому він не може? І якщо компілятор (теоретично) може це зробити, то які причини цього не використовуються в Scala? Чи існують інші мови, які підтримують таку поведінку?
Foo
з підкласами A
, B
і C
, і всі ваші збіги шаблонів відповідають лише цим трьом. Ніщо не заважає мені додати новий підклас, D
який підірве ваші відповідність шаблону.
java.lang.ClassLoader
.