Jika saya menggunakan un disegel traitatau abstract classdalam Scala dan kemudian menggunakan pencocokan pola, saya bertanya-tanya, apakah kompiler tidak tahu pada waktu kompilasi untuk patternmatch khusus ini apa implementasi yang mungkin dari sifat / kelas ini yang tersedia? Jadi, jika ya, bisakah itu tidak memberikan peringatan kecocokan pola meskipun trait/ abstract classtidak disegel karena dia tahu jenis mana yang dapat digunakan, dengan memeriksa semua kemungkinan dependensi / impor?
Misalnya jika saya memiliki Option[A]dan saya melakukan pencocokan pola hanya untuk Some[A]tetapi tidak untuk None, kompiler akan mengeluh, karena Optiondisegel.
Jika kompiler tidak dapat mengetahui / menyelesaikannya, lalu mengapa dia tidak bisa? Dan jika kompiler (secara teoritis) dapat melakukan itu, apa alasan untuk itu tidak digunakan dalam Scala? Apakah ada bahasa lain yang mendukung perilaku semacam itu?
Foodengan subclass A, Bdan C, dan semua pertandingan pola cocok hanya tiga. Tidak ada yang menghentikan saya untuk menambahkan subclass baru Dyang akan meledakkan kecocokan pola Anda.
java.lang.ClassLoader.