2012-02-27 80 views
15

無法確定StrangeIntQueue擴展隊列有什麼問題,爲什麼會出現錯誤「構造器隊列的參數不足:(leading:Int)list.Lister.Queue [Int]。Unspecified value parameter leading」 。我怎樣才能指定它?Scala編譯錯誤

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) 
    } 
    } 

回答

20
extends Queue[Int](leading) 

你必須在爭論通過,即使它似乎是「明顯的」做什麼。

還請注意,由於您已聲明leading爲私人,您實際上會得到兩份副本:一份用於StrangeIntQueue,另一份用於Queue。 (否則,你可能只是StrangeIntQueue(leading0: Int) extends Queue[Int](leading0)和使用的leading繼承副本里面。)

7

Queue類,StrangeIntQueue延伸的主要構造,需要一個參數,但你不能傳遞任何的參數。試試這個:

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