Saya pernah mendengar bahwa Scala memiliki tipe yang bergantung pada jalur. Ini ada hubungannya dengan kelas batin tapi apa sebenarnya artinya ini dan mengapa saya peduli?
scala
type-systems
path-dependent-type
oxbow_lakes
sumber
sumber
Jawaban:
Contoh favorit saya:
Jadi, jenisnya
Coordinate
bergantung pada instanceBoard
dari mana ia dibuat. Ada banyak hal yang dapat dilakukan dengan ini, memberikan semacam keamanan tipe yang bergantung pada nilai dan bukan tipe saja.Ini mungkin terdengar seperti tipe tergantung, tetapi ini lebih terbatas. Misalnya, tipe
occupied
bergantung pada nilaiBoard
. Di atas, baris terakhir tidak berfungsi karena jenisnyac2
adalahb2.Coordinate
, sedangkanoccupied
jenisnya adalahSet[b1.Coordinate]
. Perhatikan bahwa seseorang dapat menggunakan pengenal lain dengan jenis yang samab1
, jadi bukan pengenalb1
yang terkait dengan jenis tersebut. Misalnya, karya berikut ini:sumber