LoginSignup
6
3

More than 3 years have passed since last update.

Swiftのfor文に色々あった...

Last updated at Posted at 2020-06-07

動機

5年くらいSwiftやってるのに知らない文法に遭遇して愕然とした...
しかも導入されたの Swift 2.0 からだった...
もうSwiftチョットデキルって言えない...

となったので、まとめておきます。

for + where

for の内側の if で判定する代わりに、where を使ってフィルタできます。

for i in 0...4 where i % 2 == 0 {
    print(i) // 0, 2, 4
}

for + case

enum Result {
    case success(Int)
    case error
}

let results = [Result.success(10), .success(2), .error, .success(100)]

for case .success(let value) in results {
    print(value) // 10, 2, 100
}

パターンマッチ

let results = [("OK", 200), ("Not found", 404), ("Bad request", 400), ("OK", 200)]

for case (let message, 200) in results {
    print(message) // "OK", "OK"
}

範囲マッチ

let results = [("OK", 200), ("Not found", 404), ("Bad request", 400), ("OK", 200), ("Created", 201)]

for case (let message, 200..<300) in results {
    print(message) // "OK", "OK"
}

何のためにやってるの?

for case 0...5 in -10...10 {
    print("Hi!")
}

どうも ~= 演算が定義されているものでは何でも使えるっぽいです。

驚いた...

6
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3