d包装变量
struct W1(T) {
private T value;
alias getset this;
@property T getset(T v)
{
return value = v;
}
@property T getset() inout
{
return value;
}
}
struct W1test {
W1!int i;
this(int i) {
this.i = i;/* 不工作
this.i.getset = i; //*/
}
}
void main()
{
import std.stdio;
W1!int w1;
w1 = 1;
w1.writeln;
auto w1Test = W1test(2);
w1Test.writeln;
}
W1构造器不管用,主中工作.
用opCall:
struct W2(T) {
private T value;
alias opCall this;
@property T opCall(T v)
{
return value = v;
}
@property T opCall() inout
{
return value;
}
}
struct W2test {
W2!int i;
this(int i) {
//this.i = i;/* 不工作
this.i(i); //*/
}
}
void main()
{
import std.stdio;
W2!int w2;
w2 = 2;
w2.writeln;
auto w2Test = W2test(3);
w2Test.writeln;
}
为什么在构造器中要用括号?因为在main()中时,可像普通变量一样用它.
浙公网安备 33010602011771号