Meh*_*dad 5 syntax expression d
我刚看了D 2.0(NewExpression)的表达式语法,引起了我的注意:
NewExpression:
Run Code Online (Sandbox Code Playgroud)NewArguments ClassArguments BaseClasslistopt { DeclDefs }
ClassArguments:
Run Code Online (Sandbox Code Playgroud)class ( ArgumentList ) class ( ) class
究竟是什么这些ClassArguments和多个声明定义?是否有某个示例证明了它们的用途?
ClassArguments是class
构造函数参数后跟的关键字.DeclDefs是类中的声明.
此语法用于创建匿名嵌套类的实例,例如
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);
}
};
}
Run Code Online (Sandbox Code Playgroud)
以上内容可以改写成不那么模糊的形式
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);
}
Run Code Online (Sandbox Code Playgroud)