3

在阅读了这篇关于 Ada 和 C++ 的有趣文章并了解了 D 对 CTFE 和函数的常量参数专业化的支持之后,我想知道在 D 中是否可以比在 C++ 中更容易/更有效地实现 Ada 样式范围类型。有没有人可能已经写过这样的图书馆?

如果这样的范围可以在 D 中有效地实现并且对开发人员友好,它可以用作在需要确定性以及类型和内存安全性(D 已经大放异彩)的领域(例如航空电子和汽车)建立 D 的推动者。D 将因此获得更多开发者的兴趣和更强大的财务支持。

4

2 回答 2

4

将标量(有界)变量作为模板在 D 中很容易完成,事实上我记得我看到了有人已经做过的代码。不幸的是,我不记得我在哪里看到的。这就是说,恕我直言,它没有必要成为语言的一部分,而是标准库的一部分。

编辑:亚当让我想起了代码:http ://arsdnet.net/dcode/ranged.d )

范围是更广泛的概念,在 Andrei 的文章中得到了很好的解释 - http://www.informit.com/articles/printerfriendly.aspx?p=1407357&rll=1。这种类型的范围现在是 D 的核心概念。D 的切片是最强大的范围 - RandomAccessRange的实现。

例子:

import std.stdio;
import std.algorithm;

void main()
{
    int[] values = [ 1, 20, 7, 11 ]; // values is a RandomAcessRange
    writeln(filter!(value => value > 10)(values));
}

好读:

  1. http://ddili.org/ders/d.en/ranges.html
  2. http://www.drdobbs.com/architecture-and-design/component-programming-in-d/240008321
  3. http://dlang.org/phobos/std_range.html
于 2012-11-19T17:43:42.793 回答
3

我写了一些小代码,通过溢出检查来计算整数的最小值和最大值:

http://arsdnet.net/dcode/ranged.d

虽然这只是一个概念证明,我怀疑它会表现得很好,但如果内联的话可能会。

于 2012-11-19T18:14:57.283 回答