プログラマ英語学習日記

プログラミングと英語学習のまとめなど

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 が追加、allCasesenum定数一覧をまとめた定数を自動生成してくれる

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) など
  • #if hasTargetEnvironment
    • #if hasTargetEnvironment(simulator)
    • x86判定しなくてもいいように

Xcode

  • Size-Optimizedオプションが追加された
    • 10~30%小さいが、5%遅くなる
    • 新興国向けなどに
  • Incrementalビルドモードが追加



ざっと目立った変更は上記ぐらいでした。去年おととしと比べると、だいぶ控えめですね。
もっとも聞き取りが甘いので、細かい見落とし(聞き落とし)はかなりあると思いますけど。

しかし1年前と比べてまったくリスニング力が変わっていない気が少々。本当に英語は長い道のりですね...