iOS
Swift

Swift2.0で追加された構文

More than 3 years have passed since last update.


guard

条件分岐の構文。

ifと似ているが、guardは必ずelseとセットで使う。

ifだとunwrappedNameはifのブロック内でしか使えない。

func greet(name: String?) {

guard let unwrappedName = name else {
return
}

print("Hi \(unwrappedName)")
}

// ifで書くと
func greet(name: String?) {
if let unwrappedName = name {
print("Hi \(unwrappedName)")
}else {
return
}
}

greet("Jhon") // "Hi John"
greet(nil) // 何も表示されない。


defer

deferブロック内の処理はスコープを抜ける際に実行される。

例のように複数のdeferを定義すると後ろから順に実行される。

func f() {

defer { print("First") }
defer { print("Second") }
defer { print("Third") }

print("call f()")
}

call f()

Third
Second
First

ファイルを閉じるなど後処理に使える。


Availability

OSのバージョンによる分岐。

if #available(iOS 9, OSX 10.10, *) {

// iOS9以降、OSX10.10以降
}else {

}

構文は以下のようになる。

if #available(`platform name` `version`, ..., *) {

// iOS9以降、OSX10.10以降
}else {

}

最後の*は必須で、これが無いと、Must handle potential future platforms with *というエラーを吐くので、*はそれ以降を表している?

指定できるプラットフォームはiOS,OSX,watchOS


Repeat-While

いわゆるdo-while構文。

let loopTimes = 5

var loopCounter = 0
repeat {
print(loopCounter)
loopCounter++
} while loopCounter <= loopTimes

0

1
2
3
4
5


参照

iBooks The Swift Programming Language (Swift 2 Prerelease)