プログラミングを始める。 - 繰り返しましょ(for-in Loops)。
プログラミングの便利なところは何回も繰り返してやらないといけないことを自動でやってくれるところがあります。同じことを繰り返すのはめんどくさいので、効率的に作業を行いたいところです。
Swiftで使ってみましょう。
データをまとめている配列があります。
let names = ["Anna","Alex","Brian","Jack"]
このデータを使って挨拶の文"Hello 〜"という風に一人ずつ作りたい。一気に作る時にはループを使って一度の命令で実行します。
For-In Loops
を使います。
let names = ["Anna","Alex","Brian","Jack"]
for name in names{
print("Hello \(name)")
}
と書くと、配列の中の名前names["Anna","Alex","Brian","Jack"]を一つずつ取り出して"name"に代入していきます。このnameを使って"print"していきます。
辞書についても
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
とすると、
cats have 4 legs
spiders have 8 legs
ants have 6 legs
と出力されます。配列、辞書の値を単純に取り出しています。
次に繰り返す数を指定して処理をさせるやり方です。
for _ in 1...power{}
としてやり、forの次は"_"ワイルドカードをおきます。これを置くことで、この場所に置くはずの変数については書かなくて良くなります。そして"in"の次に回数をしてしてやりますが、"1...10 "の形、
1...power
が該当します。サンプルですが、
let base = 3
let power = 10
var answer = 1
for _ in 1...power {
answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
この例ですと、"3"を連続して"1...power"回、power は10が入っているので、結果として10回かけていくコードになります。
1*3、3*3、9*3・・・・という感じになります。answerには答えが入っていきますが、その答えに"3"をかけていくということです。
その他のタイプをみていきます。
"..<"
を使ってみます。
let minutes = 60
for tickMark in 0..<minutes {
// render the tick mark each minute (60 times)
}
0..<minutesとなっていて、minutesは60となっているので、これは"0"から"59"(60未満)までtickMarkに代入していくという意味になります。tickMarkには0,1,2,3 ... 59が入っていきます。
次は "stride(from:to:by:)"を使ってみます。
let minutes = 60
let minuteInterval = 5
for tickMark in stride(from: 0, to: minutes, by: minuteInterval) {
// render the tick mark every 5 minutes (0, 5, 10, 15 ... 45, 50, 55)
}
stride(from: 0, to: minutes, by: minuteInterval)
from: 0, to: minutesから"60"まで"5"刻みで"tickMark"に入って行ってきます。
"0, 5, 10, 15 ... 45, 50, 55"とtickMarkに入っていきます。
次ですが、上記は"by"でしたが"through"に変えます。"by"では最後を含みません。"through"では最後を含みます。
let hours = 12
let hourInterval = 3
for tickMark in stride(from: 3, through: hours, by: hourInterval) {
// render the tick mark every 3 hours (3, 6, 9, 12)
}
"3, 6, 9, 12"とtickMarkに入っていきます。
この記事が気に入ったらサポートをしてみませんか?