22 NİSAN 2010, PERŞEMBE
'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
22 NİSAN 2010, PERŞEMBE
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
Bunu Paylaş:
Scala açıkça bağımlı türlerini destekl...
Sınırları scala&; kabul edilebilir kar...
'tarihler ile çalışma standart yo...
Bazı zorlayıcı bağımlı yöntem türleri ...
Scala: Soyut türleri vs jenerik...