📝 D编程教程
39篇技术文档📅  最后修改于: 2020-11-04 05:11:28        🧑  作者: Mango
关联数组的索引不一定是整数,并且可以稀疏地填充。关联数组的索引称为Key,其类型称为KeyType。通过将KeyType放在数组声明的[]中来声明关联数组。关联数组的一个简单示例如下所示。现场演示编译并执行上述代码后,将产生以下结果-初始化关联数组关联数组的简单初始化如下所示。现场演示编译并执行上述代码后,将产生以下结果-关联数组的属性这是关联数组的属性-Sr.No.Property & Desc...
📅  最后修改于: 2020-11-04 05:12:29        🧑  作者: Mango
D编程指针既简单又有趣。使用指针可以更轻松地执行某些D编程任务,而没有它们则无法执行其他D编程任务(例如动态内存分配)。一个简单的指针如下所示。指针不是直接指向变量,而是指向变量的地址。如您所知,每个变量都是一个内存位置,并且每个内存位置都有其定义的地址,可以使用与号(&)运算符访问该地址,该运算符表示内存中的地址。考虑以下内容,其中显示了已定义变量的地址:现场演示编译并执行上述代码后,将产生以下...
📅  最后修改于: 2020-11-04 05:12:54        🧑  作者: Mango
元组用于将多个值组合为单个对象。元组包含一系列元素。元素可以是类型,表达式或别名。元组的数量和元素在编译时是固定的,并且在运行时不能更改。元组具有结构和数组的特征。元组元素可以是不同的类型,例如结构。可以通过像数组一样的索引来访问元素。它们由std.typecons模块中的Tuple模板实现为库功能。 Tuple使用std.typetuple模块中的TypeTuple进行某些操作。使用tuple(...
📅  最后修改于: 2020-11-04 05:13:27        🧑  作者: Mango
该结构是D编程中可用的另一种用户定义数据类型,它允许您组合不同种类的数据项。结构用于表示记录。假设您想跟踪图书馆中的书籍。您可能需要跟踪每本书的以下属性-标题作者学科书号定义结构要定义结构,必须使用struct语句。 struct语句定义了一种新的数据类型,该程序具有多个成员。 struct语句的格式如下:结构标记是可选的,每个成员定义都是一个普通变量定义,例如int i;或浮动f;或任何其他有效...
📅  最后修改于: 2020-11-04 05:13:54        🧑  作者: Mango
联合是D中可用的特殊数据类型,它使您可以将不同的数据类型存储在同一内存位置。您可以定义具有多个成员的联合,但是在任何给定时间只能有一个成员包含一个值。联合提供了一种有效的方式,可以将同一内存位置用于多种用途。在D中定义一个并集要定义联合,您必须以与定义结构时非常相似的方式使用联合声明。 union语句定义了一种新的数据类型,该程序具有多个成员。联合声明的格式如下-union标签是可选的,每个成员定...
📅  最后修改于: 2020-11-04 05:14:44        🧑  作者: Mango
范围是元素访问的抽象。这种抽象使得可以在大量容器类型上使用大量算法。范围强调如何访问容器元素,而不是如何实现容器。范围是一个非常简单的概念,它基于类型是否定义了某些成员函数集。范围是D不可或缺的一部分。D的切片恰好是最强大的范围RandomAccessRange的实现,并且在Phobos中有很多范围功能。许多Phobos算法都返回临时范围对象。例如,在下面的代码中filter()选择大于10的元素...
📅  最后修改于: 2020-11-04 05:15:15        🧑  作者: Mango
别名(如名称所指)为现有名称提供了备用名称。别名的语法如下所示。以下是较旧的语法,以防万一您引用一些较旧的格式示例。强烈建议不要使用此方法。表达式还有另一种语法,下面给出了该语法,我们可以直接使用别名而不是表达式。如您所知,typedef增加了创建新类型的能力。别名可以完成typedef甚至更多的工作。下面显示了一个使用别名的简单示例,该示例使用提供类型转换功能的std.conv标头。现场演示编译...
📅  最后修改于: 2020-11-04 05:15:38        🧑  作者: Mango
Mixins是允许将生成的代码混合到源代码中的结构。 Mixins可以是以下类型-字符串混合模板混合混合名称空间字符串混合只要在编译时就知道该字符串, D就可以将代码作为字符串插入。字符串混合的语法如下所示-例字符串混合的简单示例如下所示。现场演示编译并执行上述代码后,将产生以下结果-这是另一个示例,我们可以在编译时传递字符串,以便mixin可以使用函数来重用代码。如下所示。现场演示编译并执行上述...
📅  最后修改于: 2020-11-04 05:16:09        🧑  作者: Mango
模块是D的构建块。它们基于一个简单的概念。每个源文件都是一个模块。因此,我们编写程序的单个文件是单独的模块。默认情况下,模块的名称与不带.d扩展名的模块的名称相同。明确指定后,模块名称由module关键字定义,该关键字必须显示为源文件中的第一行(非注释)。例如,假设源文件的名称为“ employee.d”。然后,模块名称由module关键字指定,后跟employee。如下图所示。模块行是可选的。如...
📅  最后修改于: 2020-11-04 05:16:30        🧑  作者: Mango
模板是通用编程的基础,它涉及以独立于任何特定类型的方式编写代码。模板是用于创建通用类或函数的蓝图或公式。模板是允许将代码描述为模式的功能,以便编译器自动生成程序代码。可以将部分源代码留给编译器填充,直到该部分在程序中实际使用为止。编译器填充缺少的部分。功能模板将函数定义为模板会将其使用的一种或多种类型保留为未指定状态,以便稍后由编译器推导。模板参数列表中定义了未指定的类型,该参数介于函数名称和函数...
📅  最后修改于: 2020-11-04 05:16:57        🧑  作者: Mango
我们经常使用可变的变量,但是在很多情况下不需要可变性。在这种情况下可以使用不可变变量。下面给出了一些可以使用不可变变量的示例。在数学常数如pi的情况下,它永远不会改变。如果是数组,我们要保留值,这不是突变的要求。不变性使得了解变量是可变的还是可变的成为可能,从而保证了某些操作不会更改某些变量。它还降低了某些类型的程序错误的风险。 D的不变性概念由const和不变性关键字表示。尽管这两个词本身的含义...
📅  最后修改于: 2020-11-04 05:17:22        🧑  作者: Mango
文件由std.stdio模块的File结构表示。文件表示字节序列,无论是文本文件还是二进制文件都没有关系。D编程语言提供对高级功能的访问以及对存储设备上文件的低级调用(OS级别)。在D中打开文件程序开始运行时,标准输入和输出流stdin和stdout已经打开。它们准备好使用了。另一方面,必须首先通过指定文件名和所需的访问权限来打开文件。在这里,filename是字符串字面量,您可以使用它来命名文件...
📅  最后修改于: 2020-11-04 05:17:50        🧑  作者: Mango
并发使程序一次在多个线程上运行。并发程序的一个示例是Web服务器同时响应许多客户端。并发通过消息传递很容易,但是如果它们基于数据共享则很难编写。在线程之间传递的数据称为消息。消息可以由任何类型和任意数量的变量组成。每个线程都有一个ID,用于指定消息的收件人。任何启动另一个线程的线程都称为新线程的所有者。在D中启动线程spawn()函数将指针作为参数,并从该函数启动一个新线程。该函数执行的任何操作(...
📅  最后修改于: 2020-11-04 05:18:13        🧑  作者: Mango
例外是在程序执行期间出现的问题。 AD异常是对程序运行时出现的异常情况的一种响应,例如试图除以零。异常提供了一种将控制权从程序的一部分转移到另一部分的方法。 D异常处理基于try,catch和throw这三个关键字建立。throw-问题出现时,程序将引发异常。这是使用throw关键字完成的。catch-程序在要处理问题的程序中的位置捕获带有异常处理程序的异常。catch关键字指示捕获异常。try–...
📅  最后修改于: 2020-11-04 05:18:31        🧑  作者: Mango
D编程中的合同编程致力于提供一种简单易懂的错误处理方式。 D中的合同编程由三种类型的代码块实现-身体挡块状出块D中的车身挡块主体块包含执行的实际功能代码。输入和输出块是可选的,而主体块是必需的。一个简单的语法如下所示。在D中的前提条件块中in块是简单的前提条件,用于验证输入参数是否可接受以及代码可以处理的范围。 in块的一个好处是可以将所有输入条件保持在一起并与函数的实际主体分开。验证密码最小长度...