2012-02-27 23 views
15

StrangeIntQueue extending Queue'da neyin yanlış olduğunu anlayamıyorum, neden bir hata var "constructor Queue için yeterli argümanlar: (lead: Int) list.Lister.Queue [Int]. Belirtilmemiş değer parametresi lider" . Bunu nasıl belirleyebilirim?Scala derleme hatası

class Queue[+T](
    private val leading: T 
) { 
    def enqueue[U >: T](x: U) = 
     new Queue[U](leading: U) // ... 
    } 

    class StrangeIntQueue(private val leading: Int) extends Queue[Int] { 
    override def enqueue(x: Int) = { 
     println(math.sqrt(x)) 
     super.enqueue(x) 
    } 
    } 

cevap

20
extends Queue[Int](leading) 

Bunu "bariz" ne yapacağını görünse bile argümanları geçmek zorunda.

Ayrıca, leading numaralı özel bildirimde bulunduğunuzdan beri, iki kopya elde edersiniz: biri StrangeIntQueue ve diğeri Queue. (Aksi takdirde sadece StrangeIntQueue(leading0: Int) extends Queue[Int](leading0) olabilir ve iç leading devralınan kopyasını kullanın.)

7

StrangeIntQueue uzanır sınıfın Queue, birincil yapıcısı, bir parametre alır, ancak parametre için o şey geçen değiliz. Bunu deneyin:

class StrangeIntQueue(leading: Int) extends Queue[Int](leading) { 
    // ... 
}