CompactMapとflatMap、違いは何ですか、それぞれをいつ使用しますか? Swift4.1では、flatMapのユースケースをより明確にするためにFiltermapを導入するという提案で、この新しい方法が導入されました。

このメソッドを使用して、変換がオプションの値を生成するときに、オプション以外の値の配列を受信します。

MVCとMVVMAlthoughを使用したSwiftUIアプリのアーキテクチャベストプラクティスと堅牢なアーキテクチャなしで、コードを一緒に投げるだけでアプリを作成できますが、すぐに管理できないスパゲッティコードになります。 この無料ガイドを使用して、より少ないバグで固体と保守可能なアプリを作成する方法を学びます。

次の例では、mapとcompactMapの違いを参照してください。

flatMapを使用する場合

このメソッドを使用して、変換が各要素のシーケンスまたはコレクションを生成するときに、単一レベルのコレクションを受け取ることができます。

次の例のmapとflatMapの違いを参照してください。

実際、s.flatMap(transform)Array(s.map(transform).joined())と同等です。

compactMap vs flatMap

ここでの一般的な経験則は、コードを書くときに自分自身を思い出させるためです:

シーケンスで使用され、オプションの値を返す変換がある場合は、compactMapを使用します。 そうでない場合は、mapまたはflatMapのいずれかが必要な結果を与える必要があります。

MVCとMVVMAlthoughを使用したSwiftUIアプリのアーキテクチャベストプラクティスと堅牢なアーキテクチャなしで、コードを一緒に投げるだけでアプリを作成できますが、すぐに手に負えないスパゲッティコードになります。 この無料ガイドを使用して、より少ないバグで固体と保守可能なアプリを作成する方法を学びます。

compactMapという名前を付けた理由

メソッド名としてfilterMapを導入することを提案した人もいましたが、Swiftチームは代わりにcompactMapを採用することにしました。 彼らの動機を読むことは、物事をかなりクリアし、メソッドの機能についても説明します。

“filterMap”は、他のプログラミング言語、特に機能的な言語でいくつかの先例を持つ名前ですが、組み合わせた操作としては、フィルタやマップではないため、名前が誤解を招くと強く感じた人もいました。 代替案のうち、最も強力なサポートを持つものは、nil値なしで入力のコピーを返す他の言語(特にRuby)からの操作である”compactmap”の先例に基づいて構築された”compactMap”で それにもかかわらず、コアチームは、それが追加するのが合理的な操作であり、”compactMap”が操作の良い名前であることに同意します。

コメントを残す

メールアドレスが公開されることはありません。