January 1, 2017

Swift4に1つ実装がお仲間入り

Categories: 技術 | Tags: #Swift #Swift4


書いている間に年越した…あけましておめでとうございます

let year = 2017
print("Hello, \(year)!")

Swift4の機能としてSE-0110が実装された

実装されて、swiftのmasterにmergeされたのはおよそ3週間弱前…2016年の12/15頃ですかね。

Swift Evolutionでimplementedされたよってmarkdownが更新されたのがつい最近だったようです。

何がどう変わったのか

Swift4では関数(closure)で受ける引数が複数の場合に1つのtupleとして見るか、従来通り複数の引数として見るか選べる(識別できる)ようになったようです。

// Swift4ではこのように書くことができるようになった
let f1 : (Int, Int) -> Void = { x in
    // x -> (Int, Int) として識別される
    print(x.0, x.1)
}

// Swift3まではこっち
let f2 : (Int, Int) -> Void = { x, y in
    // 従来通り、x,yと複数の引数として識別される
    print(x, y)
}

ちなみに現状だと上記のようなことはできない…ようにも見えますが、
引数を使わない場合に用いる _ (アンダースコア) だと、引数が複数あっても1つ書けば済みます。

let f1: (Int, Int, Int) -> Void = { _ in
    print("")
}

ちょっとした小ネタ。


written by sgr-ksmt