iOS11と一緒に、Swift4も出されました。Swift3と比べて何が違うのか、みてみましょう。

1. String

1.1 Multi-line string宣言

Swift4ではpythonのように複数ラインの文字列宣言ことができるようになります。

1.2 Stringの扱い

Stringがcollectionのように扱われています。

結果:

 

1.3 Unicode 9をサポート

以下の全ての文字数が1になります。

 

2. Collection

2.1 新しいSwap関数

要素のインデックスで指定して交換することができます。

結果:

 

2.2 One-sided Ranges

結果:

 

3. Dictionary

3.1宣言

配列からDictionary宣言ができるようになります。

結果:

 

3.2 キーが存在してない時のデフォルト値

Swift3は nil coalescingを使って同じこと実装できますが、

Swift4の書き方ではコードがより簡潔になります。

 

3.3 Mapping value

Dictionaryをフィルタリングした後、戻り値がDictionaryではなく、実際はTuplesの配列が戻されます。

massiveCitiesがもうDictionaryではないため、massiveCities[“Shanghai”]値がよめなくなります。

かわりに、massiveCities[0].valueで値をとるしかないです。それはあまりかっこよくないね。

同じようにmap()もTuplesの配列が戻されます。

それらの関数はSwift4でもかわらないですが、mapValues()という新しい関数が追加されました。

mapValues()で実行した後の戻り値がDictionary型で、直接キーで値をとることが可能になりました。

 

3.4 Grouping

町の最初の文字によるグルーピング:

結果:

町の名前の長さによるグルーピング:

結果:

 

4. Encode & Decode

Swift4でJSONエンコーダー&デコーダーがbuilt-inされたため、外部のライブラリなどが不要になります。

モデル宣言:

内容をいれてみると

Encoding ( Model -> JSON )

結果はこのようになります:

Decoding ( JSON -> Model )

結果:

 

5. Keypaths

オブジェクトから自分のすべてのプロパティをアクセスする方法です。

keyPathが \ の演算子からはじまります。

モデル宣言:

内容をいれてみると

たとえば、Californiaの値をとりたい時、keyPathでとることができます:

結果:

Follow me!