書いている間に年越した…あけましておめでとうございます
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("")
}
ちょっとした小ネタ。