前回の勉強会中で話題に登った『アプリケーション規模で var を極力減らしてみよう』をみんなで試みる前の前提知識として用意した、変数を let で扱うことの意味やそれにまつわるお話を紹介するために作成したスライドです。
ややこしい部分はその場で説明したらいいかなと思って作ったので、スライド的に流れや説明が欠けているところもありますけど、幾らかの参考になるかもしれません。
前回の勉強会中で話題に登った『アプリケーション規模で var を極力減らしてみよう』をみんなで試みる前の前提知識として用意した、変数を let で扱うことの意味やそれにまつわるお話を紹介するために作成したスライドです。
ややこしい部分はその場で説明したらいいかなと思って作ったので、スライド的に流れや説明が欠けているところもありますけど、幾らかの参考になるかもしれません。
iOS オールスターズ2でお話しした資料です! Swift らしさってなんだろう、そんなところを API デザインガイドラインと Swift 標準ライブラリの表現に着目して 7 つほど紹介してみました。あくまでも "指針" なので『そういう風に考えていくのね』みたいに捉えて、そこからは "自分らしい" 言葉を紡いでいってくれたらいいのかなって思います。
13. If Case(Pattern Match)
enum Gender {
case Male, Female
}
let person: (String, Int, Gender) = ("Ken", 33, .Male)
// ifとguardでもcaseが使える
if case (_, 20..<65, _) = person {
print("Worker!")
}
if case (let name, _, .Male) = person {
print(name)
}
14. Optional Pattern
let nums: [Int?] = [nil, 2, 3, nil, 5]
for case let num? in nums { // nilを除いたループ。numはInt?じゃなくてInt
print(num) // 2, 3, 5
}
for case let num? in nums where num % 2 == 1 {
print(num) // 3, 5
}
15. Checking API Availability
// ランタイムのプラットホームとバージョン(以上)を判定できる
// ifとguardの条件でのみ使える
// プラットホームは、「iOS」「OSX」「watchOS」が使える
// バージョンは、メジャーだけからサブマイナーまで書ける
// 最後の要素は、絶対「*」になる
if #available(iOS 9, OSX 10.10, *) {
// Use iOS 9 APIs on iOS, and use OS X v10.10 APIs on OS X
} else {
// Fall back to earlier iOS and OS X APIs
}