當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。