Dlang は out パラメータを次のように説明します。
関数のエントリ時にその型の既定値で初期化されるパラメーター。
パラメータが関数エントリのデフォルト値で初期化された後、それは本質的に単なるref?
import std.stdio;
void foo(out int x)
{
writeln(x); //prints 0
x = 2;
}
void main()
{
int x = 1;
writeln(x); //prints 1
foo(x);
writeln(x); //prints 2
}
outと比較するドキュメントはありませんref。パラメータを記述からのショートカットとして
概念化することは正確ですか?out
import std.stdio;
void foo(ref int x)
{
x = x.init; //happens implicitly
writeln(x); //prints 0
x = 2;
}
void main()
{
int x = 1;
writeln(x); //prints 1
foo(x);
writeln(x); //prints 2
}
私はその言語の複雑さを知らないので、このような印象を持っていると、将来不測の事態が発生した場合に悲しみに暮れるのではないかと心配しています.
これらをより明確に区別できますかparameter storage classes、それとも自動的に再初期化されるのは本当に ref パラメータですか?