An error-throwing mapping closure. transform
accepts an element of this sequence as its parameter and returns a transformed value of the same or of a different type. If transform
throws an error, the sequence ends.
あるエラースローマッピングクロージャ。transform
はこのシーケンスのひとつの要素をそれのパラメータとして受け取り、同じもしくは異なる型の変換された値を返します。transform
がエラーをスローするならば、そのシーケンスは終わります。
compactMap(_:)
Availability
- iOS 13.0+
- iPadOS 13.0+
- macOS 10.15+
- Mac Catalyst 15.0+
- tvOS 13.0+
- watchOS 6.0+
- Xcode 13.0+
Technology
- Swift Standard Library Swift標準ライブラリ
Declaration 宣言
func compactMap<ElementOfResult >(_ transform: @escaping (SegmentOfResult .Element
) async throws -> ElementOfResult ?) -> AsyncThrowingCompactMapSequence
<AsyncFlatMapSequence
<Base, SegmentOfResult >, ElementOfResult >
Parameters パラメータ
transform
Return Value 戻り値
An asynchronous sequence that contains, in order, the non-nil
elements produced by the transform
closure. The sequence ends either when the base sequence ends or when transform
throws an error.
ある非同期シーケンス、それはtransform
クロージャによって生み出された非nil
要素それらを、順番に含みます。シーケンスは、基底シーケンスが終わる時かまたはtransform
がエラーをスローする時に終わります。
Discussion 解説
Use the compact
method to transform every element received from a base asynchronous sequence, while also discarding any nil
results from the closure. Typically, you use this to transform from one type of element to another.
compact
メソッドを使うことで、基底非同期シーケンスから受け取ったあらゆる要素を変換してください、そして一方でまたあらゆるnil
結果をクロージャから廃棄して。概して、あなたはこれを使ってある型の要素から別のものへと変換します。
In this example, an asynchronous sequence called Counter
produces Int
values from 1
to 5
. The closure provided to the compact
method takes each Int
and looks up a corresponding String
from a roman
dictionary. Since there is no key for 4
, the closure returns nil
in this case, which compact
omits from the transformed asynchronous sequence. When the value is 5
, the closure throws My
, terminating the sequence.
この例において、Counter
と呼ばれる非同期シーケンスは、Int
値を1
から5
まで生み出します。compact
メソッドに提供されたクロージャは、各Int
をとり、そして対応しているString
をroman
辞書から捜します。4
に対するキーがないことから、クロージャはnil
をその場合には返します、それはcompact
がこの変換されたシーケンスから省きます。値が5
である場合、クロージャはMy
をスローして、シーケンスを終端しています。