Scalaの条件分岐および繰り返し

 

こんにちはKUJIRAです。今日は条件分岐と繰り返しをやります。Scalaの条件分岐や繰り返しはJavaのそれと似ています。まずは条件分岐から。

 

条件分岐
Scalaの条件分岐は「if」を使います。

 

if文は条件の後の処理文が1行の場合中括弧は要りません。

 

if (条件式)
    処理

 

しかし処理文が複数行ある場合、中括弧が要ります。

 

if (条件式) {
    処理1
    処理2
    処理3
}

 

これらのルールはこれから出てくるループ文や関数定義など全てにおいて適用されます。

 

それではループ文を見てみます。

 

ループ
ループにはwhileやforなどを使います。

 

while文
while文は繰り返しの基本です。条件判定でtrueが出ている場合処理を繰り返し続行するようになっています。

 

while (条件文) {
    処理
}

 

for文 foreach文
for文に関してはJavaのfor文とは違います。Javaのfor文は条件となるカウンター変数の初期化と条件文、カウンターの増減式というカウンター重視の構文になります。また、リストとそのリストの要素の型の変数を渡すことによりリストの要素分だけループを行います。

 

これに比べてScalaのfor文とforeach文はどちらもListを渡して要素分だけループを行うものだけです。以下で見てみます。

 

for (変数 <- リスト) {
    処理
}

リスト(or 配列).foreach(変数 => 処理)

 

いかがでしょうか、どちらも配列中心のループだということが分かると思います。では、カウンターを用いる方法はできないのか?と思うかもしれませんが、それもちゃんとできます。方法はwhileでカウンターを使うかfor文でtoメソッドを使うかのどちらかです。以下に例を書きます。

 

whileの場合
scala> var i = 0

scala> while (i < 10) {

scala>     | println(i)

scala>     | i++

scala>     | }

scala>

 

forの場合
scala> for (i <- 0 to 9)

scala>    | println(i)

scala>

 

以上です。while文ではカウンター変数を用意しループさせています。これはJavaとかと同じです。その次のfor文ではto関数を使っています。一見すると記述方法はVisual Basic ぽく見えます。しかし、VBの場合は演算子の一部だと思いますが、Scalaでは演算子ではなく関数です。ここが大きく違うところだと思います。

今日は条件分岐とループについてメモを取りました。次は配列とリストでもやろうかな・・・ということで今日はここまでKUJIRAでした。