自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

uframer(焦冶)的专栏

目前,这里的一切都是关于D语言的。

  • 博客(29)
  • 收藏
  • 关注

原创 契约式编程

契约式编程契约是减少大型项目成本的突破性技术。契约由先验条件、后验条件、错误和不变量等概念组成。契约可以而加到 C++ 中而无需对语言加以改造,但是却十分笨拙且不一致。 在语言内部支持契约的目的是: 给契约一个一致的观感 提供工具支持 使编译器能够根据从契约中收集的信息生成更好的代码 易于管理并强制实行契约 处理契约继承 契约的概念很简单——它只是必须为真的表达式。如若

2005-02-23 22:19:00 10233

原创 D语言中的混入(Mixin)

混入混入(Mixins) 意味着用不同的编程语言表达的不同的事物。 在D中,一个混入从一个 模版声明 的过程体内提取一个任意的声明集合,并将它们插入到当前的上下文中。  模板混入: mixin 模板标志符 ; mixin 模板标志符 混入标志符 ; mixin 模板标志符 !( 模版参数列表 ) ; mixin 模板标志符 !( 模版参数列表 ) 混入标志符 ; 混

2005-02-23 22:13:00 5001

原创 D语言中的模板

模板D通过模板实现泛型编程。模板声明 定义为: 模板声明: template 模板标志符 ( 模板参数列表 ) { 声明定义 } 模板标志符: 标志符 模板参数列表 模板参数 模板参数 , 模板参数列表 模板参数: 类型参数 值参数 别名参数 模板类型参数: 标志符 标志符 模板类型参数特化 标志符

2005-02-22 11:28:00 4648 3

原创 D语言中的运算符重载

运算符重载运算符重载就是重新解释作用于特定结构或者类的一元或二元运算符的含义,被重新解释的运算符是作为结构或类的成员实现的。通过重载,我们只需使用原来的语法就可以得到我们想要的结果。 一元运算符重载可重载的一元运算符op opfunc -e opNeg +e opPos ~e opCom e++ opPostInc

2005-02-22 11:25:00 4445 1

原创 D语言中的枚举类型

枚举类型 枚举声明: enum 标志符 枚举体 enum 枚举体 enum 标志符 : 枚举基本类型 枚举体 enum 枚举基本类型 : 枚举体 枚举基本类型: 类型 枚举体: ; { 多个枚举成员 } 多个枚举成员: 枚举成员 枚举成员 , 枚举成员 , 多个枚举成员 枚举成员: 标志符 标志

2005-02-21 21:02:00 3770 1

原创 D语言中的类和接口

类D的面向对象的特性都来源于类。处在类层次最顶点的是类 Object。Object 定义了每个派生类拥有的最小功能集合,并为这些功能提供了默认的实现。 类是程序员定义的类型。作为面向对象语言,D支持对象,支持封装、继承和多态。D 类支持单继承编程范式,并且支持接口。类对象只能通过引用具现化。 类可以被导出,这意味着它的名字和非私有成员将会暴露给外部的 DLL 或者 EXE 。 类声明定

2005-02-21 20:22:00 3748 1

原创 D语言中的结构和联合

结构 & 联合 聚集声明: 标记 { 声明定义 } 标记 标志符 { 声明定义 } 标记 标志符 ; 标记: struct union AggregateDeclaration: Tag { DeclDefs } Tag Identifier { DeclDefs } Tag Identifier ; Tag: struc

2005-02-21 20:12:00 3168

原创 D语言中的数组(二)

 设置动态数组的长度动态数组的 .length 属性可以作为 = 运算符的左值: array.length = 7; 这会造成数组被在适当的位置被重新分配,现有的内容被原封不动的复制到新的数组中。如果新的数组比原数组短,将只保留新数组能够容纳的那些内容。如果新数组比原数组长,新数组长出的部分将会使用元素的默认初始值填充。 为了达到最高的效率,运行时总是试图适当地调整数组的大小(resi

2005-02-21 19:57:00 3788

原创 D语言中的数组(一)

数组有四种数组: int* p; 指向数据的指针 int[3] s; 静态数组 int[] a; 动态数组 int[char[]] x; 关联数组 指针 int* p; 这是最简单的指向数据的指针,等价于 C 指针。提供指针的目的是提供与 C 的接口并给 D 完成特定的系统级工作的能力。没有与之相关的数组长度,所以就没有办法在编译或运

2005-02-21 19:25:00 3708

原创 D语言中的语句(二)

Switch 语句switch 语句依照 switch 表达式的值来选择一条 case 语句执行。 Switch语句: switch ( 表达式 ) 语句块 Case语句: case 表达式列表 : 语句 Default语句: default: 语句 SwitchStatement: switch ( Expression ) BlockStatement

2005-02-21 19:15:00 1743

原创 D语言中的语句(一)

语句C 和 C++ 程序员将发现 D 的语句非常熟悉,他们还会发现有一些有趣的补充。 语句: 标号语句 语句块 表达式语句 声明语句 If语句 调试语句 Version语句 While语句 DoWhile语句 For语句 Foreach语句 Switch语句 Case语句 Default语句 Continu

2005-02-21 19:10:00 2228

原创 C++程序员如何用D编程

 C++ 程序员如何用 D 编程每个有经验的 C++ 程序员都积累了一系列的习惯和技术,这几乎成了第二天性。有时候,当学习一门新语言时,这些习惯会因为太令人舒适而使人看不到新语言中等价的方法。所以下面收集了一些常用的 C++ 技术,以及如何在 D 中完成同样的任务。 另见:C 程序员如何用 D 编程 定义构造函数 基类初始化 比较结构 创造新的 typedef 型别

2005-02-18 22:17:00 7271 6

原创 C程序员如何使用D编程(二)

设置和结构成员对齐方式C 的方式这是使用命令行选项完成的,而且该效果会影响整个程序,并且如果有模块或者库没有重新编译,结果会是悲剧性的。为了解决这个问题,需要用到 #pragma : #pragma pack(1) struct ABC { ... };

2005-02-18 21:55:00 1727

原创 C程序员如何使用D编程(一)

C 程序员如何使用 D 编程每个有经验的 C 程序员都积累了一系列的习惯和技术,这几乎成了第二天性。有时候,当学习一门新语言时,这些习惯会因为太令人舒适而使人看不到新语言中等价的方法。所以下面收集了一些常用的 C 技术,以及如何在 D 中完成同样的任务。 因为 C 没有面向对象的特征,所以有关面向对象的论述请参见 C++ 程序员如何使用 D 编程 。 C 的预处理程序在 C 的预处理程

2005-02-18 20:36:00 2142

原创 D语言中的函数

 函数虚函数所有的非静态非私有函数都是虚函数。这听起来也许低效,但是因为D编译器在生成代码时知道所有的类层次结构,所有未被重载的函数可以被优化为非虚函数。事实上,因为 C++ 程序员倾向于“在不确定时,声明它为虚函数”,D 采用的方法“声明为虚函数除非我们能够证明它可以是非虚函数”造成的结果是产生更多更直接的函数调用。由重载非虚函数造成的 bug 也减少了。 拥有非D链接的函数不会是虚

2005-02-14 01:21:00 3589 2

原创 D语言中的表达式(二)

 In 表达式 关系表达式 in 移位表达式 RelExpression in ShiftExpression 可以检测一个元素是否在关联数组中: int foo[char[]]; …… if ("hello" in foo) …… in 表达式同关系表达式 等有相同的优先级。移位表达式 移位表达式 和表达式 移位表达式 >> 和表达式 移位表达式 >>>

2005-02-12 17:13:00 2169

原创 D语言中的表达式(一)

表达式C 和 C++ 程序员会发现 D 中的表达式很熟悉,另外还有一些有意思的扩充。 表达式用来计算多个值并返回一个特定类型的值。随后,所得的值可以被用于赋值、测试或被忽略。表达式也可能有副作用。 表达式: 赋值表达式 赋值表达式 , 表达式 赋值表达式: 条件表达式 条件表达式 = 赋值表达式 条件表达式 += 赋值表达式 条件表达式 -= 赋值

2005-02-12 13:09:00 1752

原创 D语言中的编译器指令(Pragma)

编译器指令 Pragma: pragma ( 标志符 ) pragma ( 标志符 , 表达式列表 ) Pragma: pragma ( Identifier ) pragma ( Identifier , ExpressionList ) 编译器指令用来给编译器传递如何使用产品提供商对D的特殊扩展的信息。指令以‘;’结尾,它们可以影响一条语

2005-02-08 12:33:00 1809

原创 D语言中的特征(Attributes)

特征 特征指示器: 特征 : 特征 声明定义块 编译器指令 ; 其他特征指示器: 其他特征: 其他特征 声明定义块 其他特征 声明定义块 else 声明定义块 特征: 链接特征 对齐特征 编译器指令 deprecated private p

2005-02-07 17:39:00 1738 1

原创 D语言中的属性(Properties)

属性(Properties)每种类型和表达式都有可以查询的属性: int.sizeof // 得 4 float.nan // 得浮点数的 nan (Not A Number) 值 (float).nan // 得浮点数的 nan 值 (3).sizeof // 得 4(因为 3 是 int) 2.sizeof // 语法错误,因为“2.”是一个浮点数 int.ini

2005-02-07 17:30:00 3884 1

原创 D语言中的类型

类型基本数据类型关键字 描述 默认初始值(.init) void 无类型 - bit single bit false byte signed 8 bits 0 ubyte unsigned 8 bits 0 short signed 16 bits 0 ushort uns

2005-02-06 22:26:00 3052 4

原创 D语言中的声明

 声明 声明: typedef Decl alias Decl Decl Decl: 存储类别 Decl 基本类型 多个声明符 ; 基本类型 声明符 函数体 多个声明符: 声明符初始值 声明符初始值 , 声明符初始值列表 声明符初始值: 声明符 声明符 = 初始值 声明符标志符列表: 声明符标志符

2005-02-06 22:20:00 1678

原创 D 语言中的模块(Module)

模块 模块: 模块声明 多个声明定义 多个声明定义 多个声明定义: 声明定义 声明定义 多个声明定义 声明定义: 特征指示符 导入声明 枚举声明 类声明 接口声明 聚集声明 声明 构造函数 析构函数 不变量 单元测试 静态构造函数 静态析构函数 调试规格 版本规格

2005-02-05 18:53:00 3842 3

原创 D vs 其他语言

D vs 其他语言下表给出了 D 同其他经常提到的语言在各个特征上的粗略的比较。尽管各个语言的标准库中也提供了很多功能,但这张表格只考虑内建到语言核心中的特征。我们只考虑官方的标准特征,不考虑被提议的特征、测试版的特征或者非标准的扩展特征。而且,如同所有其他的语言比较一样,提到什么特征、忽略什么特征以及我对这些特征的解释都是带有偏向性的。 特性 D C C++

2005-02-05 18:50:00 12893 15

原创 写在前面(本分类中所有文章的版权声明)

这个分类中的文章是对DigitalMars的D文档的翻译,原文可见于http://www.digitalmars.com/d/ ,原文版权属于 DigitalMars ,版权声明为:Copyright (c) 1999-2004 by Digital Mars, All Rights Reserved 。另外,本人作为译者,保留译文的所有权利,转载请注明出处。原本这些声明我是打算放到每篇文章中去的

2005-02-04 18:56:00 1779 2

原创 D语言词法(二)

字符串文字量 字符串文字量: 所见即所得字符串 替代所见即所得字符串 双引号字符串 转义序列 十六进制字符串 所见即所得字符串: r" 多个所见即所得字符 " 替代所见即所得字符串: ` 多个所见即所得字符 ` 所见即所得字符: 字符 行尾 双引号字符串: " 多个双引号字符 " 双引号字符:

2005-02-04 17:49:00 2280 2

原创 D语言词法(一)

词法在D中,词法分析独立于语法分析和语义分析。词法分析器将源文件分割成记号。词法描述了如何识别记号。D的词法被设计为适于高速扫描,它拥有最小的特殊规则集合,只有一遍翻译,这使得构造一个正确的扫描程序很容易。对于熟悉 C 和 C++ 的人来说,记号也很容易识别。 编译的阶段编译被分为多个阶段。每个阶段都不依赖于后继的阶段。例如,扫描程序不依赖于语义分析程序。这种分离使语法制导编辑器等语言

2005-02-04 17:34:00 4529 3

原创 D语言概览(二)

接上文...模板D 模板提供了一种提供范型编程和偏特化能力的简洁的方法。 关联数组关联数组是索引可以为任意类型的数组,不像普通数组那样必须使用整数作为索引。本质上,关联数组就是散列表。关联数组使构建快速、高效、无错的符号表变得容易了。 真正的 typedefC 和 C++ 的 typedef 实际上是类型 别名 ,因为它不会引入新的类型。D 实现了真正的 typedef : type

2005-02-03 20:52:00 5670 6

原创 D语言概览(一)

概览什么是 D 语言?D 是一种通用的系统和应用编程语言。它是比 C++ 更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。 D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是

2005-02-03 20:23:00 2726 22

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除