23. Swift 3.0
4 Stable ABI(binary interface)
4 Resilience,Portability
4 Type system cleanup and documentation
4 Complete generics
4 Focus and refine the language
4 API design guidelines
@TachibanaKaoru, 2015 23
32. [0001] Allow keywords as argument labels
4 Status: Swift2.2で採用
4 Author: Doug Gregor
inやrepeatやdeferなどのキーワードとして使われていた単
語を変数のラベル名に利用することができるようになる。
(inout,var,let以外のすべての単語が使えるようになる)
@TachibanaKaoru, 2015 32
33. let numArray = [1,2,3]
// OK on Swift 2.1/2.2
func indexOf1(a: Int, within: [Int]){ }
indexOf1(2, within: numArray)
// OK on Swift 2.1/2.2
func indexOf3(a: Int, `in`: [Int]){ }
indexOf3(2, `in`: numArray)
// Error on Swift 2.1,OK on Swift 2.2
func indexOf2(a: Int, in: [Int]){ }
@TachibanaKaoru, 2015 33
35. カリー化とは
func addTwoInts(a a: Int, b: Int) -> Int {
return a + b
}
addTwoInts(a: 2, b: 3)
func addTwoIntsCurried(a a: Int) -> ( Int -> Int) {
func addTheOtherInt(b: Int) -> Int {
return a + b
}
return addTheOtherInt
}
let a1 = addTwoIntsCurried(a: 2)
a1(3)
@TachibanaKaoru, 2015 35
36. // OK in Swift2:
func curried(x: Int)(y: String) -> Float {
return Float(x) + Float(y)!
}
// OK in Swift2 and Swift3:
func curried(x: Int) -> (String) -> Float {
return {(y: String) -> Float in
return Float(x) + Float(y)!
}
}
@TachibanaKaoru, 2015 36
37. [0003] Removing var from Function
Parameters and Pattern Matching
Status: Swift3.0で採用
Author(s): David Farler
if varなどが使えなくなる。
let num : Int? = getOptionalInt()
if var num = num {// if let だとerror
num = 12
}
@TachibanaKaoru, 2015 37
38. [0004] Remove the ++ and -- operators
Status: Swift3.0で採用
Author: Chris Lattner
++と--をなくしましょう!
(Proposal7とも関連)
@TachibanaKaoru, 2015 38
39. Finally, these fail the
metric of "if we didn't
already have these, would
we add them to Swift 3?"
@TachibanaKaoru, 2015 39
40. [0005] Better Translation of Objective-C
APIs Into Swift
Status: Swift3.0で採用
Author(s): Doug Gregor, Dave Abrahams
Objective-CのAPIをSwiftにインポートする時のトランスレ
ーション処理の改善。
Stripping the "NS" Prefix なども含まれている。
@TachibanaKaoru, 2015 40
41. [0006] Apply API Guidelines to the
Standard Library
Status: レビュー待ち
Author(s): Dave Abrahams, Dmitri Gribenko, Maxim
Moiseev
Swift3.0の一部としてSwift API Design Guidelinesが公開
されるので、標準ライブラリをそれに沿った実装にする。
@TachibanaKaoru, 2015 41
42. [0007] Remove C-style for-loops with
conditions and incrementers
Status: Swift3.0で採用
Author(s): Erica Sadun
for-loopやめてfor-inを使いましょう。
var array = [10,20,30,40,50]
for(var i=0 ; i < array.count ;i++){
println("array[i] (array[i])")
}
@TachibanaKaoru, 2015 42