On this page
ControlNotificationStream.compactMap(_:)
- Declared in
- ControlNotificationStream
- Package
- libtmux-swift
- compactMap(_:) ( transform : (Self.Element) async throws -> ElementOfResult? ) AsyncThrowingCompactMapSequence<Self, ElementOfResult> ( transform : (Self.Element) async -> ElementOfResult? ) AsyncCompactMapSequence<Self, ElementOfResult>
-
Creates an asynchronous sequence that maps an error-throwing closure over the base sequence’s elements, omitting results that don't return a value.
Use the
compactMap(_:)method to transform every element received from a base asynchronous sequence, while also discarding anynilresults from the closure. Typically, you use this to transform from one type of element to another.In this example, an asynchronous sequence called
CounterproducesIntvalues from1to5. The closure provided to thecompactMap(_:)method takes eachIntand looks up a correspondingStringfrom aromanNumeralDictdictionary. Since there is no key for4, the closure returnsnilin this case, whichcompactMap(_:)omits from the transformed asynchronous sequence. When the value is5, the closure throwsMyError, terminating the sequence.let romanNumeralDict: [Int: String] = [1: "I", 2: "II", 3: "III", 5: "V"]
do { let stream = Counter(howHigh: 5) .compactMap { (value) throws -> String? in if value == 5 { throw MyError() } return romanNumeralDict[value] } for try await numeral in stream { print(numeral, terminator: " ") } } catch { print("Error: \(error)") } // Prints "I II III Error: MyError() "
- Parameter transform: An error-throwing mapping closure.
transformaccepts an element of this sequence as its parameter and returns a transformed value of the same or of a different type. Iftransformthrows an error, the sequence ends. - Returns: An asynchronous sequence that contains, in order, the non-
nilelements produced by thetransformclosure. The sequence ends either when the base sequence ends or whentransformthrows an error.
- Parameter transform: An error-throwing mapping closure.
0 declared, 0 inherited