因为疫情滞留在湖北老家回不了深圳,公司也没啥事,为节省成本,就给停薪留职了啊啊啊~!
借此时机,好好学习。毕竟咱弱鸡,不学不行 :)
- 定义一个Queue的结构体,实现队列先入先出的效果
1 | struct Queue<T>: Sequence { |
- 既然通过Array实现先进先出的结构体成功了,那咱们for-in一下吧!!! why?
1 | error: MyPlayground1.playground:254:8: error: type 'Queue<T>' does not conform to protocol 'Sequence' |
根据报错信息能够知道,是因为咱自定义的结构体没有遵循Sequence协议,
想要实现for-in,则需要遵循Sequence协议,并通过
func makeIterator() -> Self.Iterator
方法给定一个对应的迭代器,那么咱们先实现一个迭代器(代码如下)
1 | struct QueueIterator: IteratorProtocol { |
- 创建好迭代器,那么接下来就给Queue结构体添加Sequence协议了
1 | struct Queue<T>: Sequence { |
- 到此大功告成,再试试for-in,则能顺利打印出来了
1 | for q in queue { |