一个非常有趣的会议是关于D-Specific设计模式的,在D社区中,有些人认为它可能是一本关于有效编码技术的书的起点.其他人认为现在为时尚早,因为没有多少人有很多经验,这样一本书的作者会对有效性的概念有一些偏见/个人欣赏.SO是一种更具互动性的媒体(有其局限性).因此,等待'Effective D'出来,如果我们可以分享一些(查杀)建议/技术/模式以使D代码看起来更好,那将是很好的.我认为如果答案会更清楚:
这是一个:使用TypeTuple进行测试
在测试函数时,通常使用一系列不同的输入来测试它.要做到这一点,你可以轻松地在输入值数组上使用for循环,但是如果你的输入是一个类型,通常是模板代码呢?
D编程语言允许您遍历TypeTuple,因此您需要做的就是声明要测试的所有类型的元组,并以正常方式迭代它们:
import std.typetuple;
alias TypeTuple!(int, long, double) Types;
foreach (T; Types)
test!T();
Run Code Online (Sandbox Code Playgroud)
你可能想知道这是什么编译的.毕竟,循环的主体随T变化,因此生成的代码也必须在每次迭代时变化.编译器如何处理这个?
答案是循环完全展开.上面的代码字面意思如下:
test!int();
test!long();
test!double();
Run Code Online (Sandbox Code Playgroud)
因此,您可能需要密切关注TypeTuples的大小,以避免代码膨胀.