サーチ…
構文
- for(<initializer>; <ループ条件>; <ループ文>){<statements>}
- while(<condition>){<statements>}
- do {<ステートメント>} while(<条件>);
- foreach(<el>、<collection>)
- foreach_reverse(<el>、<collection>)
備考
-
for
ループinfor
D 、 仕様 -
while
ループプログラミング中のD 、 仕様 - プログラミング
do while
whiledo while
、 仕様 -
foreach
in Programming in D 、 opApply 、 仕様
ループの場合
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
for (int i = 0; i < arr.length; i++)
{
arr[i] *= 2;
}
writeln(arr); // [2, 6, 8]
}
whileループ
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
int i = 0;
while (i < arr.length)
{
arr[i++] *= 2;
}
writeln(arr); // [2, 6, 8]
}
一方を行います
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
int i = 0;
assert(arr.length > 0, "Array must contain at least one element");
do
{
arr[i++] *= 2;
} while (i < arr.length);
writeln(arr); // [2, 6, 8]
}
フォアハ
Foreachでは、エラーを起こしにくく、読みやすく、コレクションを反復することができます。反復要素を直接変更したい場合、属性ref
を使うことができます。
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
foreach (ref el; arr)
{
el *= 2;
}
writeln(arr); // [2, 6, 8]
}
反復のインデックスにもアクセスできます。
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
foreach (i, el; arr)
{
arr[i] = el * 2;
}
writeln(arr); // [2, 6, 8]
}
逆の順序での反復も可能です:
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
int i = 0;
foreach_reverse (ref el; arr)
{
el += i++; // 4 is incremented by 0, 3 by 1, and 1 by 2
}
writeln(arr); // [3, 4, 4]
}
ブレーク、続行、ラベル
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4, 5];
foreach (i, el; arr)
{
if (i == 0)
continue; // continue with the next iteration
arr[i] *= 2;
if (i == 2)
break; // stop the loop iteration
}
writeln(arr); // [1, 6, 8, 5]
}
ラベルを使用して、ネストされたループ内でbreak
またはcontinue
することもできます。
void main()
{
import std.stdio : writeln;
int[] arr = [1, 3, 4];
outer: foreach (j; 0..10) // iterates with j=0 and j=1
foreach (i, el; arr)
{
arr[i] *= 2;
if (j == 1)
break outer; // stop the loop iteration
}
writeln(arr); // [4, 6, 8] (only 1 reaches the second iteration)
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow