2012-02-27 81 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) { 
    // ... 
}