指定した回数だけ繰り返すfor
if〜elseの例は、今後も折に触れていくらでも出てくるので、今は単純な例を示すだけにして、次に進みましょう。同じ(ような)処理を繰り返すループです。
Swiftのループは、他のC言語系のものと同じように「for」というキーワードを使って表現するのがもっとも一般的な方法です。ただし、よく見かけるJavaやJavaScriptなどとはだいぶ文法が異なっています。当初は同じような書き方も可能でしたが、今後(バージョン3以降)は使えなくなります。そうした他の言語のforを知っているという人こそ、注意してSwiftならではの新しい書き方を学びましょう。
実はSwiftのforは、ほぼ必ず「in」というキーワードを伴うので、「for-inループ」と呼ばれます。最も簡単なのは、ループする際に、その回数を数えるのに使う変数と、その変数の値の範囲を指定する方法です。
ここでは、ループの回数を数える変数をcountとしています。値の範囲は、2つの数字の間に「...」(半角ピリオドを3つ続けて書く)を入れて示します。この場合、countの値は1から始まって1ずつ増えていき、7になるまで繰り返し実行します。7を含むので、7回だけループを回ることになります。
if文のときと同じように繰り返し実行したいプログラムの範囲を{}でくくって示します。ここでは、単にprint()によってcountの値をコンソールに表示しているだけです。この{}の中にはもちろん複数の文を入れて、多くの処理をまとめて繰り返すことができます。
上の例では、ループの中でcountという変数の値を使っていましたが、それが不要なら、つまり値の範囲で示しただけの回数を実行しさえすれば良いのなら、変数の代わりに「_」(半角アンダーバー)を書くこともできます。それを使った例を示しましょう。
この場合は、for-inループに入る前にresultという変数を整数の1で初期化してあります。ループの中ではこのresultに2を掛けています。これを10回繰り返すと、結局2を10回掛け合わせることになり、2の10乗を計算することになります。今度はfor-inループが終わってからresultの値をprint()で表示させると、結果は1024になっていることが確かめられます。
ところで、このループの中の、
result = result * 2
という表現に、もう違和感はないでしょうか。どう見ても、「=」の左辺と右辺はイコールではないのですが、これは等号ではなく、代入演算子でした。少し詳しく言うと「この文を実行する前のresultの値に2を掛けたものを、新たなresultの値にする」という意味でした。
この式ではresultという変数名が代入演算子の左右に出てきて冗長な感じなので、短縮して、
result *= 2
のように書くこともできます。意味は同じですが、慣れてくると、こう書く方が「resultに2を掛ける」という処理が直感的に理解しやすく感じられるでしょう。実際にPlayground上で書き換えて、同じ結果になることを確かめておいてください。また、こう書くほうが、プログラミングの玄人っぽく見えます。憶えておくとよいでしょう。
次回の予定
Swiftには、条件によって分岐したり、繰り返し処理を実行したりする方法がまだまだいくつも用意されています。しかし、そうしたものを一度に学ぼうとしても、存在意義がわかりにくく、憶えにくいものになってしまいます。そこで次回は目先を変えて、これまでのように1つの変数に1つのデータというのとはまったく異なるデータの扱いを見ていきましょう。