我刚刚看了D 2.0的表达式语法(NewExpression),引起了我的注意:
NewExpression:
NewArguments ClassArguments BaseClasslistopt { DeclDefs }
ClassArguments:
class ( ArgumentList ) class ( ) class
这些 ClassArguments 和 DeclDefs 究竟是什么?有没有一个例子可以证明它们的用途?
答案 0 :(得分:6)
ClassArguments 是关键字class
,后跟构造函数参数。 DeclDefs 是类中的声明。
此语法用于创建anonymous nested class的实例,例如
import std.stdio;
void main() {
class K {
this() { writeln("K.__ctor"); }
}
auto f = new class (1, "4", 7.0) K {
this(int a, string b, double c) {
super();
writefln("anon.__ctor: %s %s %s", a, b, c);
}
};
}
以上内容可以改写成不那么模糊的形式
import std.stdio;
void main() {
class K {
this() { writeln("K.__ctor"); }
}
class AnonymousClass : K {
this(int a, string b, double c) {
super();
writefln("anon.__ctor: %s %s %s", a, b, c);
}
}
auto f = new AnonymousClass(1, "4", 7.0);
}