
【Swift】【初心者用】for文の書き方
はいどうも!
フリーランスエンジニアの南だいすけです!
今回はSwiftのfor文の書き方について解説していきます。
for文とは
よく繰り返しの処理なんて言われています。
for文とは例えば1〜9までの配列があって、
その配列全ての数字を2倍にしたい!とか、
配列のなかの〜だけを取りたい。。!
っといった時などにもよく使います。
現場では「ここをfor文で回して〜する」などと言われたりしますね。
for文の書き方
var numbers = [1,2,3]
for num in numbers {
print(num)
}
// 結果 1
// 結果 2
// 結果 3
こんな感じです。
ここはnumbersを回していると、イメージするとわかりやすいです!
では日本語にしてみます。
numbersを回して一つ一つの要素をnumに入れるよ。
ちなみに。。。
下記のようなArrayの要素番号と要素の両方を取りたい時は
enumerated()をArrayの後ろにつけてあげましょう。
let drinkArray = ["coffee", "tea", "milk"]
for index, element in drinkArray.enumerated() {
print(index, element)
}
// 結果 0 coffee
// 結果 1 tea
// 結果 2 milk
for の後に二つ変数をおき、はじめが要素番号で次が要素になります。
上記コードでいう要素番号がindexで、要素はelementになります。
これは後述するforEachやmapでも一緒なので覚えておきましょう!
forEachの書き方
var numbers = [1,2,3]
numbers.forEach {
print($0)
}
// 結果 1
// 結果 2
// 結果 3
このようにfor文とは違い、変数名.forEachという書き方をします。
またfor文でいうnumは書かなくてもいいので、
そう言った場合は$0を使います。
書きたい場合は下記のような感じにします。
numbers.forEach { num in
print(num)
}
要素番号も欲しい場合はfor文同様、変数名の後にenumerated()を書き、
{ 以降に変数を二つ書いてあげましょう。
let drinkArray = ["coffee", "tea", "milk"]
drinkArray.enumerated().forEach { index, element in
print(index, element)
}
// 結果 0 coffee
// 結果 1 tea
// 結果 2 milk
mapの書き方
var numbers = [1,2,3]
numbers.map {
print($0)
}
// 結果 1
// 結果 2
// 結果 3
// こんな書き方も出来ます
let numbersPlusOne = numbers.map { $0 + 1 }
print(numbersPlusOne)
// 結果 2
// 結果 3
// 結果 4
mapは書き方自体はforEachと一緒ですが、
numbersPlusOneのように定数化することが出来て便利です。
// こんな書き方も出来ますの方を解説すると、
{ }内の条件(今回は$0は要素のことなのでそれに+1したもの)を
定数にいれるということです。
日本語でいうと
numbers($0のこと)に+1 したものをnumbersPlusOneに入れてprintしてね
と言った感じです。
filterの書き方
let array = [1,2,3,4,5]
let newArray = array.filter { $0 < 4 }
print(newArray)
// 結果 [1,2,3]
filterは条件に合う要素のものを絞り込んで使いたい時に便利です。
こちらはmapの親戚という認識でいましょう!
日本語でいうと
array($0のこと)の4より小さいものをnewArrayに入れてね
と言った感じです。
ちょっとmapとfilterは難しいですね。
しかし使っていくうちに「ああ、こういうことか!」となると思います!
どうだったでしょうか?
今回はSwiftのfor文について書かせていただきました!
さいごに
プログラミングって難しいですよね。。
僕も文系大学を出て、全くの未経験からスタートしたので
気持ちは痛いほどよくわかります。。!
少しずつ勉強していけば知識が蓄積され、
いつかはそれが線として繋がる日が絶対きます!!
一緒にがんばっていきましょう!
この記事で少しでも初心者の方が、
「お!そういうことか!」とか「ちょっとわかったぞ!!」
っとなっていただけたら幸いです。
最後まで見ていただきありがとうございました!
ではまた次の記事でお会いしましょう!