コンテンツにスキップ

Foreach文

出典: フリー百科事典『ウィキペディア(Wikipedia)』

foreachfor-eachforeachforfor

[]


Perl
foreach 変数 (リスト) {
    
}



(一)

(二)

(三)


for ( my $i = 0; $i < @list; $i++ ) {
    変数 = $list[$i];
    
}


[]

awk[]


awk
for (変数 in 配列) {
    
}

C#[編集]

foreach ( 変数 in コレクション) {
    
}

コレクションは配列のほか、IEnumerableもしくはIEnumerable<T>を実装したオブジェクトでもよい。実際の要件は特定のインターフェイスを実装していることではなく、GetEnumerator()という名前のメソッドを実装してさえいれば何でもよい[1]

C++[編集]

C++11にて、範囲ベースの for ループが言語仕様として追加されている。

for ( 変数 : コレクション) {
  
}

上記で「コレクション」と記した箇所には、配列のほか、std::vectorstd::arrayのような標準ライブラリにおいてコンテナに分類される各種のオブジェクトなども使用できる。

そのほか、1998年の標準規格化当初からC++標準ライブラリにfor_eachアルゴリズム(関数テンプレート)が存在する。

関数オブジェクト = std::for_each(
  先頭イテレータ,
  末尾イテレータ,
  関数オブジェクト
);

C++11C#

C++/CLIMicrosoft Visual C++ 2005for each使[]C++11 for 
for each (変数 in コレクション) {
  
}

D[編集]

式を評価し、その結果は静的配列、動的配列、連想配列、構造体、クラスでなければいけない。式部分が配列である場合は、変数は複数宣言することができる。

foreach (変数 ; ) {
  
}

Go[編集]


Goforeach使[2]

2使/()(2)
for index, value := range コレクション {
	// インデックスと値に何かをする
}

単値のフォームを使って、index/key(最初の要素)を取得する。

for index := range コレクション {
	// インデックスに何かをする
}

Java[編集]

Java 5で導入された拡張for文 (enhanced for statement) [3][4]がforeach文に相当する。コレクションにはjava.util.Collectionなど、java.lang.Iterableを実装する式を配置することができる。

for ( 変数 : コレクション) {
  
}

また、文ではなくメソッドであるが

コレクション.forEach( 変数 -> {
  
} )

の様に .forEach メソッドにラムダ関数を渡しコレクションの要素に対し反復処理を行うことができる[5]

JavaScript, ActionScript[編集]

オブジェクトの反復処理にはfor-in文を用いる。変数にはプロパティ名(連想配列で言うキー)が代入されるので、プロパティの値は式 オブジェクト[変数] で取得する。

for (const 変数 in オブジェクト) {
    
}

JavaScriptのfor-in文は、ユーザー定義のプロパティについて、プロトタイプチェーンをさかのぼって反復処理を行う。このため、特に配列に対してfor-in文を用いると、他の言語とは異なる挙動をすることがある。

const array = new Array(3);
let output = "";
for (const key in array) { output += key + " "; }
// このとき array.length === 3 であるが、
// array にユーザー側から配列要素を定義していないので、
// output === "" である。

// 配列もオブジェクトなので、数値以外のプロパティを設定できる。
array.foo = "foo"

output = "";
for (const key in array) { output += key + " "; }
// このとき output === "foo " である。

// オブジェクトに新しいインスタンスメソッドを追加してみる。
Object.prototype.myMethod = function () {};

output = "";
for (const key in array) { output += key + " "; }
// 配列もオブジェクトなので、このとき output === "foo myMethod " である。

// なおもちろん、この時点でも array.length === 3 である。

ECMA-262第5版 (JavaScript 1.6, ActionScript 3.0) からは、ArrayインスタンスにforEachメソッドが追加された。このメソッドは本項で説明されているforeach文と同様に配列の要素を反復して文を実行する[6]

array.forEach(function (変数) {
    
});

ECMA-262第6版 (ECMAScript 2015) からは、配列などのiterableオブジェクトの値で反復処理をするfor-of文も導入された[7]

for (変数 of オブジェクト) {
    
}

Perl[編集]

foreachキーワードを使用する。Perlにおいて、forとforeachは互いに交換可能である[8]

foreach 変数 (コレクション) {
  
}

PHP[編集]

foreach (配列 as 変数) {
  
}
foreach (配列 as 変数1 => 変数2) {
  
}

12

Python[]


PythonforCforeach
基本的なイテレータブルコレクションへの反復処理
:
for 変数 in イテレータブルコレクション :
    

Pythonのタプル代入は、forループでも利用でき、辞書オブジェクトの(キー、値)ペアを反復処理することも容易にできる。

辞書オブジェクトへの反復処理
:
for key, value in 辞書オブジェクト.items():
    

for ... inがPythonの唯一のforループなので、他の言語で見られるカウンターループ相当には、組み込み関数 rangeを用いる。

カウンターループ
:
for i in range(len(seq)):
    # seq[i] への処理

組み込み関数 enumerate関数を用いると、添字と要素の対でシーケンスへの繰り返しができる。この場合もタプル代入を利用する。

添字と要素の対で反復処理
:
for i, item in enumerate(seq):
    

Pythonのfor文はelseを伴うことができす。

breakとelse
:
for 変数 in イテレータブルコレクション :
    文1
    if 条件式:
        文2
        break
    文3
else
    文4

2breakfor

else4forbreak

Ruby[]


for 変数 in コレクション
  
end

これは以下のイテレータ構文と、変数のスコープを除いて等価である。

コレクション.each do |変数|
  
end

Ruby

Rust[]


for for <pattern> in <expression> { /* optional statements */ }   IntoIterator::into_iter 使  Iterator trait   implementation of IntoIterator for all Iterator  for 使  Iterator::next  Iterator::next  Some(_)  pattern  None 
let mut numbers = vec![1, 2, 3];

// Immutable reference:
for number in &numbers { // calls IntoIterator::into_iter(&numbers)
    println!("{}", number);
}

for square in numbers.iter().map(|x| x * x) { // numbers.iter().map(|x| x * x) implements Iterator
    println!("{}", square);
}

// Mutable reference:
for number in &mut numbers { // calls IntoIterator::into_iter(&mut numbers)
    *number *= 2;
}

// prints "[2, 4, 6]":
println!("{:?}", numbers);

// Consumes the Vec and creates an Iterator:
for number in numbers { // calls IntoIterator::into_iter(numbers)
    // ...
}

// Errors with "borrow of moved value":
// println!("{:?}", numbers);

Smalltalk[編集]

コレクション do:
[ :変数 |
 
].

SmalltakLisp#do:使#do:#do:CollectionIterable1#do:C++#do:#do:CollectionIterable#select:, #collect:, #detect:, #inject:into:使

(Smalltalkself)

#do:ValueAdapter (#value:) (ValueAdapter)

ValueAdapter0

(1 to: 100) do:
[ :each |
  
].

#do:使

SmalltalkRubyECMAScriptJavaC#[]

Visual Basic[編集]

For Each 変数 In コレクション
  
Next 変数

PowerShell[編集]

foreach (変数 in コレクション) {
  
}

HSP[編集]

foreach 変数
  文
loop

なでしこ[編集]

(リスト)を反復。
  文

変数は「それ」に代入される。

シェルスクリプト[編集]

cshではforeachと書き、shではforと書く。実用上リストの部分にはワイルドカードを含むファイル列を書くことが多い。

csh系

foreach 変数 ( リスト )end

sh系

for 変数 in リスト
do
  done

番外編[編集]

PL/SQL[編集]


OraclePL/SQLForEach

SELECT使PL/SQL
DECLARE
    CURSOR C IS
        SELECT 
             *
        FROM
            TBL1
        WHERE
            TBL1.FIELD1 >= 100;
BEGIN
    FOR D IN C LOOP
        DBMS_OUTPUT.PUT_LINE(D.FIELD1 || ' ' || D.FIELD2 || ' ' || D.FIELD3);
    END LOOP;
END;

参照[編集]

関連項目[編集]