話すこと
● ざっくりとしたSwift 5.1 の変更点確認
● Pickup
○ SE-0242 Synthesize default values for the memberwise initializer
○ SE-0068 Expanding Swift Self to class members and value types
● まとめ
Slide 4
Slide 4 text
Swift5.1の変更点
(ざっくり)
Slide 5
Slide 5 text
Swift 5.1で入った変更点
Swift UIの導入もあり、非常に多くの変更が入っています。
簡単にキーワードを上げていきます。
Slide 6
Slide 6 text
Swift 5.1で入った変更点
Module Stability
swiftmodule の ライブラリInterface定義の安定化により、ライブラリのコンパイル時に
使用したSwiftバージョンとアプリのSwiftバージョンが異なっても大丈夫に
Additional Language and Compiler Update
SwiftUIの導入と共に多くの変更が入っています
● Property Wrapper
● Opaque Result Types
● single expression の場合はreturn 不要 ( var sample: String { “sample” } )
● Key Path Member Lookup
● etc
Slide 7
Slide 7 text
Swift 5.1で入った変更点
Standard Library Updates
Collectionsの扱い, Arrayの初期化, StringにいくつかのAPIが追加 ,Identifiableプロトコ
ルの導入など
Language Server Protocol
LSPをサポートしているエディターであれば、Swiftのコード補完やシンタックスハイライ
ト、ジャンプ機能などが使えるように
Slide 8
Slide 8 text
PickUpして話すこと
Swift UI の導入もあり多くの変更点があります
それぞれの内容は深く、他の勉強会でも語られているため
本日の発表ではあまり他の勉強会でみなかった2つをPickupします
● SE-0242 Synthesize default values for the memberwise initializer
● SE-0068 Expanding Swift Self to class members and value types
Slide 9
Slide 9 text
SE-0242
Synthesize default values for
the memberwise initializer
Slide 10
Slide 10 text
Synthesize default values for the memberwise initializer
ざっくり説明
Structの自動生成される初期化メソッドがより便利になった
Slide 11
Slide 11 text
Synthesize default values for the memberwise initializer
従来は、 `var id: Int = 0` と定義していてもデフォルト値を考慮した初期化メソッドは生成
されていませんでした
Slide 12
Slide 12 text
Synthesize default values for the memberwise initializer
User(name: “Tanaka”) のように初期化するためには、 明示的に定義する必要がありま
した
Slide 13
Slide 13 text
Synthesize default values for the memberwise initializer
var id: Int = 0 を考慮した初期化メソッド
init(id: Int = 0, name: String) のようにデフォルト引数を考慮した初期化メソッドが自動生
成されるようになり、明示的にメソッドを作成する必要がなくなりました
OK!
Slide 14
Slide 14 text
SE-0068
Expanding Swift Self to class
members and value types
Slide 15
Slide 15 text
Expanding Swift Self to class members and value types
ざっくり説明
class内からstatic変数やメソッドにアクセスしやすくなりました
Slide 16
Slide 16 text
Expanding Swift Self to class members and value types
staticなhogeという変数とfugaというメソッドを定義します。
struct内からアクセスする際に従来は ${Struct名}.変数 や type(of: self).変数とする必
要がありました。
Slide 17
Slide 17 text
Expanding Swift Self to class members and value types
Swift 5.1 以降では、 class, struct, enum内から staticな変数やメソッドにアクセスする際
に、 Self を利用できるようになりました
OK!
Slide 18
Slide 18 text
Expanding Swift Self to class members and value types
インスタンス変数・メソッドへのアクセス
● self.変数
● self.メソッド
staticへ変数・メソッドへのアクセス
● Self.変数
● Self.メソッド
上記のように綺麗な対比関係ができました