D 中的 Ada 样式范围类型



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

如果

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

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

编辑:亚当提醒我代码:http://arsdnet.net/dcode/ranged.d)

范围是更广泛的概念,在安德烈的文章中很好地解释了 - 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

我写了一些小代码,通过溢出检查对整数进行最小值和最大值:

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

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

最新更新