SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013