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) {
// ...
}