D には参照 (リファレンス) はないが, ref 関数というものがある.
ref.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import std.stdio;
int g;
ref int foo(){
return g;
}
class A{
int p;
ref int f(){
return p;
}
}
void main(){
foo() = 10; // g == 10 になる
writeln(g);
A a = new A;
a.f() = 20; // a.p == 20 になる
writeln(a.p);
/*
ref 関数は戻り値を参照で返す, 左辺値になるので代入可能
*/
}
|
ref.d の実行結果は:
[cactus:~/code_d/d_tuts]% ./ref
10
20