Generic Instance Method

compactMap(_:)

Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.

Declaration

func compactMap<ElementOfResult>(_ transform: (UInt8) throws -> ElementOfResult?) rethrows -> [ElementOfResult]

Parameters

transform

A closure that accepts an element of this sequence as its argument and returns an optional value.

Return Value

An array of the non-nil results of calling transform with each element of the sequence.

Discussion

Use this method to receive an array of non-optional values when your transformation produces an optional value.

In this example, note the difference in the result of using map and compactMap with a transformation that returns an optional Int value.

let possibleNumbers = ["1", "2", "three", "///4///", "5"]

let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
// [1, 2, nil, nil, 5]

let compactMapped: [Int] = possibleNumbers.compactMap { str in Int(str) }
// [1, 2, 5]

Complexity: O(m + n), where n is the length of this sequence and m is the length of the result.

See Also

Transforming a Digest

func map<T>((UInt8) -> T) -> [T]

Returns an array containing the results of mapping the given closure over the sequence’s elements.

func flatMap<SegmentOfResult>((UInt8) -> SegmentOfResult) -> [SegmentOfResult.Element]

Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.

func flatMap<ElementOfResult>((UInt8) -> ElementOfResult?) -> [ElementOfResult]

Generates an array containing the non-nil results of calling the given transformation with each byte of the digest.

Deprecated
func reduce<Result>(Result, (Result, UInt8) -> Result) -> Result

Returns the result of combining the elements of the sequence using the given closure.

func reduce<Result>(into: Result, (inout Result, UInt8) -> ()) -> Result

Returns the result of combining the elements of the sequence using the given closure.

var lazy: LazySequence<SHA256Digest>

A sequence containing the same elements as this sequence, but on which some operations, such as map and filter, are implemented lazily.