做单链表迭代器失败了


#1

我想给自己做的List弄一个迭代器,让我可以这样调用

for i in list
    print(i.value)
end

于是我这样定义

运行错误

查看帮助

好像没什么问题啊,请问我错在哪里,state不能是Tuple吗?


#2
(ptr1,ptr2)=(list.head,list.head)

这是一个解构的expression,这个写法在这里不对


#3

那应该怎么做呢:thinking:


#4

你可以直接用 state=(list.head,list.head)
然后再在函数体里做解构

我记得这个state是 positional argument,所以直接直接定义Base.iterate(list, (list.head,list.head))就可以了


#5

那我应该怎么设置返回值


#6

没明白你的问题…

不是直接返回下一个元素和更新后的状态么?

建议你看下一些常见的iterator的实现。