Scala ошибка компиляции

Невозможно выяснить, что случилось с тем, что 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)
    }
  }

Ответы

Ответ 1

extends Queue[Int](leading)

Вам нужно передать аргументы, даже если кажется "очевидным", что делать.

Обратите внимание также, что, поскольку вы объявили leading private, вы фактически получите две копии: один для StrangeIntQueue и один для Queue. (В противном случае вы могли бы просто StrangeIntQueue(leading0: Int) extends Queue[Int](leading0) и использовать унаследованную копию leading внутри.)

Ответ 2

Основной конструктор класса Queue, который StrangeIntQueue extends, принимает параметр, но вы не передаете ему что-либо для параметра. Попробуйте следующее:

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