for文(繰り返し)

ループカウンタを使って、特定の条件を満たしている間、または特定の回数同じ処理を繰り返す構文の、プログラミング言語別メモ。 whileでもループできる言語が多い。

配列やリストの要素に対して繰り返し処理をさせる方法は foreachも参照。

C言語 / C++

for(int i = 0; i < 10; i++){
    ...;
}

以下の2つは同じ意味になる。

for(式1; 式2; 式3){
    ...;
}

または

式1;
while(式2){
    ...;
    式3;
}

Go言語 (golang)

for i := 0; i < 10; i++ {
  ...;
}

For statements | The Go Programming Language Specification
http://golang-jp.org/ref/spec#For_statements

Java

C言語ライクのfor文を使える。

for (int i = 0; i < 10; i++){
    ...;
}

forの括弧の中の2つ目の部分の条件式はC言語などと違ってboolean型以外の式を置くことはできない。

Scala

for (i <- 0 until 10) {
    ...;
}

またはforeachメソッドを使って

(0 until 10).foreach { i =>
    ...;
}

Scalaのfor式はforeachメソッド呼び出しのシンタックスシュガーであって、 1つ目の例はコンパイラによって2つ目の例に変換される。 foreachという名前のメソッドがあれば for<- の右側に書くことができる。

0 until 10 というのは scala.collection.immutable.Range というクラスのインスタンスを生成し、これには foreach というメソッドがあるので、こういう書き方ができる。(-> to/untilメソッド)

for式で多重ループを書くこともできる。

// 二重ループ
for (i <- 0 until 10; j <- 0 until 10) {
    ...;
}

PHP

C言語ライクのfor文を使える。

for ($i = 0; $i < 10; $i++){
    ...;
}

コロンを使った以下の記法も可能。

for ($i = 0; $i < 10; $i++):
    ...;
endfor;

配列に対して繰り返し処理をするにはforeachを使う。

for文 | PHP Manual
http://www.php.net/manual/ja/control-structures.for.php

Smarty

0から9までのループの例

{for $i = 0 to 9}
  ...;
{/for}

Python

0から9までを繰り返す例

for i in range(10):
    ...

range は0から始まる指定の長さのシーケンスを返す。

for参照。

Ruby

0 から n-1 までを繰り返すには

n.times do |i|
  ...
end

または

for i in 0..(n-1) do
  ...
end

または

for i in (0).upto(n-1) do
  ...
end

逆順にするには

for i in (n-1).downto(0) do
  ...
end

引数を伴った breakfor文全体の返り値を指定することができる。 break で指定しなかった場合は、for文は、in で指定した値の each メソッドの返り値を返す。

Perl

C言語ライクのfor文を使える。

for (my $i = 0; $i < 10; $i++) {
    ...;
}

$i のスコープはfor文の中のみである。

以下のような範囲演算子を使った方法もできる。(0から9までの10回処理を繰り返す例)

for my $i (0 .. 9) {
    ...;
}

Perlでは forforeach はまったく同じなので、ここで foreach と書いても同じ。

-> 配列でのforeach

sh (シェルスクリプト)

bashでは以下のように書ける。

# 0から9までの10回処理を繰り返す例
for((i=0; i < 10; i++)); do
    echo $i
done

この書き方はUbuntuでのシェルスクリプトのインタプリータでデフォルトとなっているdashでは使えない。

seqコマンドを使う以下の方法であれば、bashでもdashでも使える。

# 1から10までの10回処理を繰り返す例
for i in `seq 10`; do
    echo $i
done

-> seqコマンド

ワンライナーで書きたい場合は各コマンドの後に改行の代わりにセミコロンが必要だが、do のあとには不要。

for i in `seq 10`; do echo $i; done

ループの中では break が使える。

JavaScript

C言語ライクのfor文を使える。

for(var i = 0; i < 10; i++){
    ...;
}

var i と書いているが、スコープはfor文を含む関数内であり、for文に限定できるものではない。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。