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 参数?