当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Swift sequence(state:next:)用法及代码示例

函数

sequence(state:next:)

将由 next 的重复惰性应用程序形成的序列返回到可变的 state

声明

func sequence<T, State>(
    state: State,
    next: @escaping (inout State) -> T?
) -> UnfoldSequence<T, State>

返回值

next 产生每个连续值的序列。

参数

state

将传递给闭包的初始状态。

next

一个接受 inout 状态并返回序列的下一个元素的闭包。

详述

序列的元素是通过调用具有可变状态的next 来获得的。相同的状态被传递给 next 的所有调用,因此后续调用将看到先前调用所做的任何突变。当 next 返回 nil 时,序列结束。如果 next 从不返回 nil ,则序列是无限的。

此函数可用于替换许多包装闭包的AnyIterator 实例。

例子:


// Interleave two sequences that yield the same element type
sequence(state: (false, seq1.makeIterator(), seq2.makeIterator()), next: { iters in
  iters.0 = !iters.0
  return iters.0 ? iters.1.next() : iters.2.next()
})

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 sequence(state:next:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。