Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D中的Ada样式范围类型 阅读了有关艾达和C++的有趣文章,知道D支持CTFE和函数的常数参数特化,我想知道Ada Style Range类型是否比C++更容易/有效地实现在D中。也许有人已经写了这样一个图书馆吗_D_Compile Time_Compile Time Constant_Range Types - Fatal编程技术网

D中的Ada样式范围类型 阅读了有关艾达和C++的有趣文章,知道D支持CTFE和函数的常数参数特化,我想知道Ada Style Range类型是否比C++更容易/有效地实现在D中。也许有人已经写了这样一个图书馆吗

D中的Ada样式范围类型 阅读了有关艾达和C++的有趣文章,知道D支持CTFE和函数的常数参数特化,我想知道Ada Style Range类型是否比C++更容易/有效地实现在D中。也许有人已经写了这样一个图书馆吗,d,compile-time,compile-time-constant,range-types,D,Compile Time,Compile Time Constant,Range Types,如果这些范围能够在D中有效地实施并且对开发人员友好,那么它可以被用作在对确定性和类型和内存安全(如果D已经发光)有要求的行业(如航空电子和汽车)中建立D的促进者。因此,D将获得更多的开发人员兴趣和更强大的财务支持。使用标量(有界)变量作为模板很容易,事实上我记得我看到有人已经做过的代码。不幸的是,我不记得在哪里见过它。也就是说,没有必要让它成为语言的一部分,而是成为标准库的一部分 (编辑:亚当提醒我代码:) 范围更广的概念在Andrei的文章中有很好的解释-。 这种类型的范围现在是D的核心概念。

如果这些范围能够在D中有效地实施并且对开发人员友好,那么它可以被用作在对确定性和类型和内存安全(如果D已经发光)有要求的行业(如航空电子和汽车)中建立D的促进者。因此,D将获得更多的开发人员兴趣和更强大的财务支持。

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

编辑:亚当提醒我代码:)

范围更广的概念在Andrei的文章中有很好的解释-。 这种类型的范围现在是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));
}
好书:


  • 我编写了一些小代码,可以使用溢出检查来执行整数的最小值和最大值:


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

    不是那种类型的范围,而是一个有界(标量)变量(像一个带最小值和最大值的实数),谢谢Adam-我记得我在某处见过它!:)这正是我心目中的代码。:)这可以扩展到浮点类型(带/或不带汇编辅助)吗?是的,应该可以。我不知道这里是否有类似asm检查的浮点溢出标志,但是我们可以做一些事情,比如如果result比较。。。。我将文件(刷新链接)更改为在asm上执行静态if,因此现在它至少可以在简单情况下在浮点上工作。太棒了!我会尝试一下。你不应该检查一下(_payload在else子句中?还是有两种支票?那么
    返回q
    意味着什么?我看不到符号
    q
    的定义/声明。我想我们需要检查无穷大或最大浮点值,对吗?