Dをつつく9-動的配列。人間は全てを予知出来ない。
ふうー。調子が良すぎて一日中飛んでしまったよ。 じゃあ、予定通り動的配列をつつくよ。
という事でいつものサンプルプログラムをごらんあれ!
import std.stdio;
int main( char[][] ) {
//初期状態
int[] array;
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
//要素を1つ追加
writeln( "動的配列に要素を1つ追加します。" );
int value = 100;
array.length = 1;
array[ 0 ] = value;
writeln( "追加された要素は", array[ 0 ], "です。" );
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
return 0;
}
さて、皆どう感じた?D言語って独特だと思わない?
動的配列を使用するには、長さを先に明示して要素を追加 しなくちゃならない。この辺はどの言語でも一緒なんだけど、 lengthプロパテを設定しながら それを行うというのは斬新ピヨ。新しい言語の息吹を感じるピヨね。 でもここで1つの疑問が生じるピヨ。今ある要素よりも小さい数字をlengthプロパティに代入したらどうなるんだろう?早速試してみるピヨ。
import std.stdio;
int main( char[][] ) {
//初期状態
int[] array;
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
//要素を1つ追加
writeln( "動的配列に要素を1つ追加します。" );
int value = 100;
array.length = 1;
array[ 0 ] = value;
writeln( "追加された要素は", array[ 0 ], "です。" );
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
//100の要素を追加
writeln( "動的配列の要素を100個に変更します。" );
array.length = 100;
array[] = value;
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
//要素数を減らすとどうなる?
writeln( "動的配列の要素を半分に変更します。さてどうなるでしょうか?" );
array.length = array.length / 2;
writeln( "動的配列の初期サイズは「", array.length, "」、",
"参照サイズは", array.sizeof, "です。" );
return 0;
}
実行する前に皆でどうなるか予想してみよう。エラーが出るかな?それとも・・・結果は実行してからのお楽しみにという事にしておくよ。
本当はもっと動的配列には機能があって嘴がむずむずするけど、 繰り返し構文を使わないとサンプルが書けないので後のお楽しみにしておくピヨ。
次は連想配列いくピヨ。とぉー。