[Swift中級 #8] Swift KeyPathまとめ、map(\.name)の仕組み
\.nameはmapの省略構文ではなく、独立した型であるKeyPathの値です。プロパティアクセスを値にするとはどういうことか、読み取り専用・値型への書き込み・参照型への書き込みという3つの階層、実務での活用例を整理します。
記事を読むLANGUAGE · 52 ARTICLES
Swift言語の記事を新着順にご覧ください。
すべての記事
\.nameはmapの省略構文ではなく、独立した型であるKeyPathの値です。プロパティアクセスを値にするとはどういうことか、読み取り専用・値型への書き込み・参照型への書き込みという3つの階層、実務での活用例を整理します。
記事を読むプロパティラッパーはSwiftUIの構文ではなく、Swift 5.1でSE-0258として導入された言語機能です。コンパイラーによる@Clampedの変換、wrappedValueとprojectedValue($)の正体、乱用を避ける基準を整理します。
記事を読むCodableの自動合成が実際に生成するものから、キー名の不一致・日付形式・ネスト構造・部分的な失敗への標準的な対処、DecodingErrorのデバッグまで整理します。
記事を読むmap・filter・compactMap・flatMap・reduceの違いは、クロージャが何を返すかで決まります。forループとの使い分け、チェーンが生む中間配列、lazyシーケンスが解決する問題をまとめました。
記事を読む関連型(associatedtype)は、プロトコルに用意された型の空欄です。悪名高いgeneric constraintエラーの理由と、SE-0309・SE-0346で制約が緩和された経緯、primary associated typesの使い方を整理します。
記事を読むメソッドスウィズリングは、セレクタとIMPを結ぶ対応表をランタイムで入れ替える手法です。慣用的な実装全体、_cmdが嘘をつく副作用、どこまで使ってよいかの境界を整理します。
記事を読むSwift 5.6以降のコードでは、プロトコル名の前にsomeまたはanyが付きます。some View、any Error、some Collectionなどです。以前はプロトコル名をそのまま型の位置に書けましたが、現在はanyを付けないとコンパイラーが警告やエラーを出します。…
記事を読むSwiftコードで初めて山括弧 <T> に出会うと、思わず目が止まります。関数名の横に大文字のアルファベットがあり、ドキュメントを開くと func map<T>( transform: (Element) -> T) -> [T] のようなシグネチャが待っています。ジェネリックはSwift中級への登竜門です…
記事を読むメソッドスウィズリングのコードは、なぜ決まって+loadの中に入っているのでしょうか?似て見える+initializeに入れてはいけないのでしょうか?
記事を読むSwiftの記事やリリースノートを読むと、SE-0296やSE-0345のようなコードが頻繁に登場します。async/awaitの紹介にはSE-0296が、if let nameの省略構文にはSE-0345が付いています。この番号の正体は何でしょうか。
記事を読むSwift標準ライブラリを見ると、Int、Double、BoolだけでなくString、Array、Dictionary、Setまで、すべてstructです。他言語ならクラスである型も、Swiftでは値型です…
記事を読むSwiftには不思議な共存があります。Playgroundsでprint("Hello")の1行から始める初心者向けの言語でありながら、同じ言語でジェネリクスとマクロが絡み合う標準ライブラリが書かれています。小学生向けのコーディング教育アプリ(Swift…
記事を読む