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