Dをつつく24-反復文2。お決まり手順は省略。
せっかちだけど、さっそくサンプルプログラムを見てね。
import std.stdio;
int main( char[][] ) {
string[] array;
array.length = 5;
array[ 0 ] = "中博俊";
array[ 1 ] = "じゃんぬねっと";
array[ 2 ] = "夏椰";
array[ 3 ] = "なおこ(・∀・)";
array[ 4 ] = "まゆりん";
writeln( "わんくま同盟の皆さんを番号順に",
array.length, "名表示します・・・" );
foreach( int i, string str; array ) {
writeln( i, "番", str, "さん" );
}
return 0;
}
D言語のforeach文はちょっと面白いピヨ。 VB.NETでは普通一つの要素を指定するんだけど、D言語の場合は インデックスと値の両方を指定できるピヨ。 ちょっと凄いよね。今回のサンプルプログラムでもこの機能が役立ったピヨ。 地味だけど結構便利だよね。
話しは変わるけど、実はこのサンプルプログラムforeach文以外の注目ポイントがあるんだ。 分かったかな?注目点はstringの文字列型ピヨ。 D言語では文字列はinvariant(char)[]の代わりにstring が用意されているピヨ。 いちいちこんなにもタイプするの面倒だから特別にstringが用意されているんだ。親切だよね。 でもstringはタイプ量を減らすだけの効果ではないんだ。 サンプルプログラムの代入文をよく見てごらん。"文字列".dupがないよね。これはinvariantキーワードが指定されているからなんだよ。 stringは実に便利だよね。
これからは、char[]よりもstringを使用しよう。
D言語にはまだ他にもforeach range 文という見慣れない文があるんだ。 今回はちょっと長いけど、がんばってforeach range文をつつこう。
import std.stdio;
int main( char[][] ) {
string[] array;
array.length = 5;
array[ 0 ] = "中博俊";
array[ 1 ] = "じゃんぬねっと";
array[ 2 ] = "夏椰";
array[ 3 ] = "なおこ(・∀・)";
array[ 4 ] = "まゆりん";
writeln( "わんくま同盟の皆さんを番号順に",
array.length, "名表示します・・・" );
foreach( int i; 0..array.length ) {
writeln( i, "番", array[ i ], "さん" );
}
return 0;
}
foreach文と違って foreach rang文は開始値と終了値が指定できるんだ。 だけどその代わり、 foreach rang文はインデックスと値を指定できないんだ。 何故なら、 foreach rang文の変数はカウンタ だからピヨ。何にでも長所と短所があるって事だね。
今回はお疲れ様でした。お終い。