老师请问peek是否有bug

来源:4-5 (编程Lexer02 Javascript)——实现流的peek和putBack操作

mike3938797

2020-05-24

测试用例如图

it('test_lookahead2',()=>{
        const it = new PeekIterator(arrayToGenerator([..."abcdefg"]))
        assert.equal(it.next(),'a')
        assert.equal(it.peek(),'b')
        assert.equal(it.peek(),'b')
        assert.equal(it.next(),'b')
        assert.equal(it.next(),'c')
        it.putBack()
        it.putBack()
        assert.equal(it.peek(),'b')
        assert.equal(it.next(),'b')
        assert.equal(it.next(),'c')
        assert.equal(it.next(),'d')
    })

如果在putback以后进行peek的话,下一个值就不应该是stackputback的头元素了而应该是尾部元素了

peek(){
        if(this.stackPutBacks.length>0){
            return this.stackPutBacks.tail
        }
        const val = this.next()
        this.putBack()
        return val

    }

改造方法如上能通过所有测试用例

写回答

1回答

求老仙

2020-05-25

hello,赞。建议到gitlab提mr。

0
0

大学计算机必修课新讲--编译原理+操作系统+图形学

轻松超越大学课程,前阿里P8专家的实践精华总结

1752 学习 · 157 问题

查看课程