Using this message, I've extended a mutable queue in order to have a fixed-length queue.
import scala.collection.mutable
class FiniteQueue[A](limit: Int) extends mutable.Queue[A] {
override def enqueue(elems : A*) = {
super.enqueue()
while(super.size > limit) {
super.dequeue()
}
}
}
So this will work when I use
val myQueue: FiniteQueue[Double] = new FiniteQueue(3)
myQueue.enqueue(1) //myQueue = {1}
myQueue.enqueue(2) //myQueue = {1,2}
myQueue.enqueue(3) //myQueue = {1,2,3}
myQueue.enqueue(4) //myQueue = {2,3,4}
If I do
myQueue += (1,2,3,4)
then I end up with myQueue = {1,2,3,4}
rather than {2,3,4}
So how do I override the +=
functionality?