なかなか慣れないSwift文をあげるとFOR文だと思います。
確かに簡単にはなりましたが、何気なく使っていたので。。
swiftから下記のようなFor文はかけない。
1 2 3 |
for var i = 0; i < 5; i++ { print("\(i)") } |
代わりに、こう書けばいいらしい。
1 2 3 4 5 6 7 |
for i in 0..< 5 { print("\(i)") } //or Array(0..<5).forEach {print("\($0)")} |
普段、数字ではなく配列からFor文の使うため、一般的には下記のようになるでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
array.forEach {print("\($0)")} //indexが必要なときにはtupleを利用することもできる for (index, element) in array.enumerated() { if (index % 2) != 0 { print("\(element)") } } //もっと短くするのであれば、clouserを利用することに。。 array.enumerated().filter { ($0.0 % 2 != 0)} .map { $0.1 } array.enumerated().flatMap { ($0.0 % 2 != 0) ? $0.1 : nil } |
学習の後に実際に使ってみたら、こんな感じで書けました。(Taskクラスを持っているtasks配列があった場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 1. tasks.forEach { task in print("\(task.id)" } // 2. for (index, task) in remindTasks.enumerated() { if (index % 2) != 0 { print("\(task.taskId)") } } // 3. let workTasks = tasks.enumerated().filter {($0.0 % 2 != 0)} .map { $0.1 } let workTasks = tasks.enumerated().flatMap {($0.0 % 2 != 0) ? $0.1 : nil } |
個人的には3.の方がswiftらしい書き方だと思います。
この投稿へのコメント