0
我用了this answer提到的RingBuffer實現,這從IndexedSeq繼承:從IndexedSeq繼承,但希望更新()返回子類
class RingBuffer[A](val index: Int, val data: IndexedSeq[A]) extends IndexedSeq[A] {
def shiftLeft = new RingBuffer((index + 1) % data.size, data)
def shiftRight = new RingBuffer((index + data.size - 1) % data.size, data)
def length = data.length
def apply(i: Int) = data((index + i) % data.size)
}
我希望能夠做的是這樣的:
var rb = new RingBuffer(0, IndexedSeq(1, 2, 3))
rb = rb.updated(0, 4).shiftLeft
...但更新返回IndexedSeq。
我應該重寫RingBuffer實現中的更新嗎?或者我應該採取不同的方法?