Swift 的标准库是否包含a或类似内容的列表变形Sequence
?
列表或序列上的 Anamorphism 与reduce
函数相反。因此,它不会将序列折叠为单个值,而是构建一个序列。
reduce
接受一个初始值,以及一个用于将序列元素与 this 组合的函数,并返回一个最终值。它的签名看起来像这样(为可读性添加了换行符):
public func reduce<Result>(
_ initialResult: Result,
_ nextPartialResult: (Result, Self.Element) throws -> Result) rethrows
-> Result
序列的变形可能是这样的:
func inflate<State, Element>(
_ initialState: State,
_ generator: @escaping (State) -> (State, Element)?)
-> AnamorphismSequence<State, Element>
通过给它一些初始状态,并告诉它如何把它变成一个元素和下一个状态,它可以为你建立一个序列。所以,我可以得到一个像这样的数组Array(1..<10)
:
Array(inflate(1) { s in s < 10 ? (s+1, s) : nil })