'In yolunu bağımlı Scala türleri ne demektir?
Scala-bağımlı yol türleri olduğunu duydum. Bir şey iç-dersleri yapmak için ama bu aslında ne anlama geliyor ve neden umursayayım?
CEVAP
En sevdiğim örnek:
case class Board(length: Int, height: Int) {
case class Coordinate(x: Int, y: Int) {
require(0 <= x && x < length && 0 <= y && y < height)
}
val occupied = scala.collection.mutable.Set[Coordinate]()
}
val b1 = Board(20, 20)
val b2 = Board(30, 30)
val c1 = b1.Coordinate(15, 15)
val c2 = b2.Coordinate(25, 25)
b1.occupied = c1
b2.occupied = c2
// Next line doesn't compile
b1.occupied = c2
Yani, Coordinate türü, örneği oldu Board örneği bağlıdır. Bu, değerlerine bağlı olan bir tür güvenlik Bir tür veren ve türleri yalnız değil ile yapılabilir şeyler vardır.
Bu tür bağımlı gibi gelebilir ama daha sınırlıdır. Örneğin, occupied tipi Board değerini bağlıdır. Yukarıdaki son satır c2 tipi occupied 8**,'s tipi Set[b1.Coordinate]. çünkü işe yaramıyor Bir değil, dolayısıyla b1, aynı tipteki başka bir tanımlayıcı kullanabilirsiniz unutmayıntanımlayıcıb1 tipi ile ilişkili. Örneğin, aşağıdaki gibi çalışır:
val b3: b1.type = b1
val c3 = b3.Coordinate(10, 10)
b1.occupied = c3

Scala: Soyut türleri vs jenerik...
Sınırları scala&; kabul edilebilir kar...
'tarihler ile çalışma standart yo...
Scala açıkça bağımlı türlerini destekl...
Bazı zorlayıcı bağımlı yöntem türleri ...