d的优势
原文在此
作者:SealabJaster.
统调/动态生成代码/内省/简洁调用函数/传递λ至模板(内联且不牺牲可读性)等,可用来创建你想要的任何东西.
在D中,你没有限制,如属性可自然表达:
@Command("command", "非常复杂命令")
struct ComplexCommand
{
@CommandArgGroup("Debug", "调试相关参数")
{//命令参数组
@CommandNamedArg("verbose|v", "允许详细")
Nullable!bool verbose;
@CommandNamedArg("log|l", "指定日志文件")
Nullable!string log;
}
}
上面代码,在C#中可行,但是是在运行时.而C++则要特殊法门.
另一个是区间,这是D主页上面的:
import std.stdio, std.array, std.algorithm;
void main()
{
stdin
.byLineCopy
.array
.sort!((a, b) => a > b) //降序
.each!writeln;
}
或,设计界面时,大量描述性细节,我可自动在定义界面文件中允许用新控件:
@DataBinding
struct MyControlBinding
{
@BindingFor("stringVal")
string someString;
@BindingFor("intVal")
@Name("number")
int someInt;
}
@UsesBinding!MyControlBinding
class MyControl : UIBase
{
public string stringVal;
public int intVal;
}
界面文件:
UI:view {
name "自定义界面"
MyControl {
someString "Hey"
number 69
}
}
还有pegged/vibe-d的diet模板,只用标准工具就可用的.
一旦学会内省/生成代码,就拥有了无限可能.
D相对其他语言最强的是D的表达与建模能力.这些方面即使动态语言也不能优雅的干活.
浙公网安备 33010602011771号