Jika saya menggunakan un disegel trait
atau abstract class
dalam 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 class
tidak 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 Option
disegel.
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?
Foo
dengan subclass A
, B
dan C
, dan semua pertandingan pola cocok hanya tiga. Tidak ada yang menghentikan saya untuk menambahkan subclass baru D
yang akan meledakkan kecocokan pola Anda.
java.lang.ClassLoader
.