プレ多読 2冊 2万5千語 読了。
久しぶりに多読してみました。有名な「The ring」、およびラダーの「The Gandhi Story」を読んでみたので簡単なレビューでも。
続きを読むWWDC2018 What's New in Swift
リスニングの練習かねて最近はWWDC2018動画を見てます。せっかくなのでまとめ共有です。
推測聞きばかり...さすがに網掛け聞きできるほど器用ではない。
一回目は What's New in Swift 。今までと比べると小規模な変化です。
概要
- Swiftロードマップ
- 新規API群
- ビルド設定関係
Swiftロードマップ
- Swift4.2は秋リリース
- Swift5.0が来年の早い段階でリリース予定
- Swift-RuntimeがOSに入るらしい
- 起動が早くなるとか
新規API群
hashable
hashCode関数が大幅変更。Hasher
に値をいれていく。Hash用の値がプロセスごとに変わりより安全になる。
//Before protocol Hashable { var hash : Int } //After protocol Hashable { func hashValue(into hasher: inout Hasher) } struct User : Hashable { let name: String let id : Int64 func hashValue(into hasher: inout Hasher) name.hash(&hasher) id.hash($hasher) } }
CaseIterable
CaseIterable
が追加、allCases
でenum定数一覧をまとめた定数を自動生成してくれる
enum Direction2: CaseIterable { case east case west case north case south } print(Direction2.allCases) //east,west,north,south
Random
Random生成がInt/Floatなどに追加され楽に。shuffledなど便利機能も
//range指定で取得 let randInt = Int.random(in: 1..< 10) let randFloat = Float.random(in: 0..< 1) //配列系 let arr = [1, 2, 3, 4, 5] //ランダムに要素取得。Optionalが返るので注意 let randomValue = arr.randomElement()! //ランダムに並び替えた配列の取得 let randomized = arr.shuffled()
便利マクロ系
#if canImport()
- ()内Framewokrがあるかどうか。
#if canImport(UIKit)
など
- ()内Framewokrがあるかどうか。
#if hasTargetEnvironment
#if hasTargetEnvironment(simulator)
- x86判定しなくてもいいように
Xcode系
- Size-Optimizedオプションが追加された
- 10~30%小さいが、5%遅くなる
- 新興国向けなどに
- Incrementalビルドモードが追加
ざっと目立った変更は上記ぐらいでした。去年おととしと比べると、だいぶ控えめですね。
もっとも聞き取りが甘いので、細かい見落とし(聞き落とし)はかなりあると思いますけど。
しかし1年前と比べてまったくリスニング力が変わっていない気が少々。本当に英語は長い道のりですね...