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