Scala编译错误

zap*_*dlo 19 scala compiler-errors

无法弄清楚StrangeIntQueue扩展Queue有什么问题,为什么会出现错误"构造函数Queue没有足够的参数:( leading:Int)list.Lister.Queue [Int].未指定的值参数前导".我怎么指定它?

  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)
    }
  }
Run Code Online (Sandbox Code Playgroud)

Rex*_*err 24

extends Queue[Int](leading)
Run Code Online (Sandbox Code Playgroud)

即使看起来"显而易见"该怎么做,你也必须传递论据.

另请注意,由于您已声明leading私有,因此您实际上将获得两个副本:一个用于StrangeIntQueue,一个用于Queue.(否则你可以StrangeIntQueue(leading0: Int) extends Queue[Int](leading0)使用leading内部的继承副本.)


Jes*_*per 7

类的主构造Queue,其StrangeIntQueue延伸,有一个参数,但你不能传递任何的参数.试试这个:

class StrangeIntQueue(leading: Int) extends Queue[Int](leading) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)