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

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • talkandroid

    talkandroid

    27 Mayıs 2010
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011