On this page
ControlNotificationStream.min(by:)
- Declared in
- ControlNotificationStream
- Package
- libtmux-swift
- min(by:) ( by : (Self.Element, Self.Element) async throws -> Bool ) Self.Element?
-
Returns the minimum element in the asynchronous sequence, using the given predicate as the comparison between elements.
Use this method when the asynchronous sequence's values don't conform to
Comparable, or when you want to apply a custom ordering to the sequence.The predicate must be a *strict weak ordering* over the elements. That is, for any elements
a,b, andc, the following conditions must hold:-
areInIncreasingOrder(a, a)is alwaysfalse. (Irreflexivity) - If
areInIncreasingOrder(a, b)andareInIncreasingOrder(b, c)are bothtrue, thenareInIncreasingOrder(a, c)is alsotrue. (Transitive comparability) - Two elements are *incomparable* if neither is ordered before the other according to the predicate. If
aandbare incomparable, andbandcare incomparable, thenaandcare also incomparable. (Transitive incomparability)
The following example uses an enumeration of playing cards ranks,
Rank, which ranges fromace(low) toking(high). An asynchronous sequence calledRankCounterproduces all elements of the array. The predicate provided to themin(by:)method sorts ranks based on theirrawValue:enum Rank: Int { case ace = 1, two, three, four, five, six, seven, eight, nine, ten, jack, queen, king }
let min = await RankCounter() .min { $0.rawValue < $1.rawValue } print(min ?? "none") // Prints "ace"
- Parameter areInIncreasingOrder: A predicate that returns
trueif its first argument should be ordered before its second argument; otherwise,false. - Returns: The sequence’s minimum element, according to
areInIncreasingOrder. If the sequence has no elements, returnsnil.
- Raises
-
0 declared, 0 inherited