概念
迭代器模式属于行为型模式,提供了循环集合的标准方法
例子
我们自己使用数组创建一个队列类,要想让这个队列类有for in循环的方法,需要让该类遵守Sequence协议并实现协议中的makeIterator方法
public func makeIterator() -> IndexingIterator<ArraySlice<T?>> {
// 只枚举非空对象
let nonEmptyValues = array[head ..< array.count]
return nonEmptyValues.makeIterator()
}
这样我们对我们自己创建的队列类对象就能使用for in循环方法了,包括sorted方法,还有许多高级函数如:compactMap、filter
demo地址
https://github.com/pro648/BasicDemos-iOS/tree/master/IteratorPattern
网友评论