`
qiezi
  • 浏览: 497738 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

D语言令人喜爱的几个地方

    博客分类:
  • D
阅读更多
1、去掉了丑陋的宏。
C/C++中的宏是很令人厌烦的,D不允许再使用它。

2、好用的字符串常量表达式。
除了类C的使用双引号的字符串常量表达式以外,还可以使用`字符。可以使用x"68 65 6C6C 6F"来表示"hello",r"ab\na"则忽略字符串常量中转义字符的转义作用,还可以在字符串常量后加上c, w或d来指示字符串常量是char[]类型、wchar[]类型还是dchar[]类型。可以使用~运算符连接2个字符串。

3、数字。
数字可以直接使用,还可以这样来定义:int a = 3_029_301_000; 数字直接量(包括整数、浮点数、复数)表达式中,“_”字符是被忽略的。另外还直接提供了复数类型。

4、提供定长数组、变长数组、关联数组。
int[3] a定义一个定长数组;int [] a定义一个变长数组;int[int]定义一个关联数组,键类型是int,值类型是int;int[char[]] a定义一个关联数组,键类型是char[],值类型是int,使用非常方便。
可以使用foreach来遍历数组:
foreach (int index, int value; a)
  printf (
"%d: %d\n", index, value);
foreach (char[] key, int value; a)
  printf (
"%.*s: %d\n", index, value);

可以使用in操作符来判断某个值是否是关联数组的一个键:
int[char[]] a;
if ("hello" in a)
  writefln (
"hello");

数组可以切片(slice):
int[] a; 
int[] b = a[1..3]; 
int[] c = a[1..length];

等等。。。。

5、其它还支持委托、函数指针、模板、异常、RAII、契约式编程、单元测试、with语句、auto/typeof、垃圾回收、操作符重载、内联汇编、条件编译、嵌入到HTML等,它还标准化了ABI(这是C/C++最让人头痛的地方之一)。这些特性大部分都比较熟悉和实用,下面简单介绍一下条件编译和嵌入到HTML。

6、条件编译。
在D中,可以使用version(VersionID)来进行条件编译:
version (Win32)
{
  
//
}
else
{
  
//..
}

还可以使用debug条件:
debug
{
  
//
}
else
{
  
//
}

或者:
debug printf ("hello");
静态条件编译:
const int n=1;
static if (n == 1)
  writefln (
"hello");
else
  writefln (
"world");

类型检查:
int n = 3;
if (is(n[]))
  writefln (
"like array");
if (is(n:int))
  writefln (
"is an integer");


7、嵌入HTML。
在一个HTML文件中,<code>和</code>之间的部分可以当作D代码来编译。比如下面这段代码:
<h1>This is a test</h1>
<code>
import std.c.stdio;

int 
<font size=+1><b>main</b></font>()
{
&nbsp;<span style="color:red">printf</span>(<u>&quot;hello world\n&quot;</u>);
&nbsp;return 0;
}
</code>
<hr />
<h1> End </h1>

把它存储为HTML文件,可以直接使用dmd编译器编译。
分享到:
评论
1 楼 wugc 2008-12-05  
尽捡些没用的说。

相关推荐

    湖北省咸宁市嘉鱼县城北中学九年级英语上册 Unit 2 Saving the Earth Topic 2 Section D导学

    在这个部分,我们将关注以下几个关键知识点: **1. 不定代词和副词:** 这部分强调了不定代词在句子中的运用,如"none of us"(我们中没有一个人)、"anywhere"(任何地方)、"everywhere"(到处)等。不定代词用于...

    c#学习笔记.txt

    如前所述,我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为...

    新目标英语七年级上学期3-10单元测试试卷11精选.doc

    这篇文档是针对七年级学生的一份英语测试试卷,主要涵盖了词汇、短语翻译、词形变化和选择题等几个部分,旨在检验学生对英语基础知识,尤其是与电影、故事和文化相关词汇的理解和应用能力。 一、词汇填空部分 1. ...

    《你必须知道的495个C语言问题》

    C是一门简洁精妙的语言,掌握基本语法容易,真正能够自如运用,就不那么简单了。你难免会遇到各种各样的问题,有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题的答案。 《你必须知道的495个C语言问题》的...

    山东大学 英语二模拟题 【三套试题汇总】[汇编].doc

    "Finally the crowd broke (up) _____ several groups." 表示人群分散成几个小组,应使用短语“break into”,故选D. into。 3. 第三题考察介词的使用。"Being afraid of the dark, she always slept _____ the ...

    jackson经典电动力学部分习题答案

    然而,Jackson的野心在于他几乎涵盖了经典电磁理论的大部分内容,除了一些明显的遗漏(如共形映射方法)外,其广度和深度令人印象深刻,甚至可以比肩托马斯·阿奎那的博学。 作为参考书,Jackson的著作无疑是出色的...

    2017_2018学年七年级英语上册Unit9MyfavoritesubjectisscienceSectionB3a_SelfCheck课后作业新版人教新目标版

    在这部分的单项选择练习中,我们看到几个关于语法和句意理解的问题: 1. 第一题考察疑问词的使用,答案是D(Who),询问是谁教你英语。 2. 第二题考查动词时态,主语是第一人称I,所以使用动词原形B(have)。 3. ...

    宿迁专版2020中考英语复习方案第05篇基础速测04词汇运用+完成句子试题202005152232

    3. 令人放松的:relaxing,形容适合休息的地方。 4. 讨论:discussion,班长想就运动会与我们进行讨论。 5. 科学家:scientist,Albert Einstein是历史上最著名的科学家之一。 6. 古代的:ancient,Daniel告诉我们古...

    你必须知道的495个C语言问题

    2.27 为什么人们那么喜欢用显式的掩码和位操作而不直接声明位域? 第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]=i++; 3.2 使用我的编译器,下面的代码inti=7;printf("%d\n",i++*i++);打印出49。...

    Linux操作系统基础教程

    要的是,Linux 上有公认的 C 语言世界最好的编译器 gcc,如果你想得到一个效率更高的开 发环境(并不一定是最友好的,但一定是最强大的),我建议你一定要好好的熟悉一下 Linux。 三.如何得到Linux? 据我所知...

    everything

    其速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。它小巧免费,支持中文,支持正则表达式,可以通过HTTP或FTP分享搜索结果。如果不满意Windows自带的搜索工具、Total ...

    七年级英语上册Unit9MyfavoritesubjectisscienceSectionB3a_SelfCheck课后习题新版人教新目标版

    1. 连词的使用:第一题考察了连词的用法,正确答案是D(because),表明我们喜欢音乐的原因是因为它令人放松。这提示我们在写作或表达原因时要正确使用因果关系的连词。 2. 一般现在时态:第二题考查了一般现在时态...

    北大实验学校二年级语文期末测试卷.docx

    ”正确答案应为“那秀丽如画的山水,怎能不令人流连忘返?”(问号) #### 五、句子变换(9分) **知识点概述:** 这部分旨在培养学生对句子结构的理解与运用能力,通过不同形式的句子变换来训练学生的语言组织...

    部编版三年级下册语文第五单元知识要点汇总.pdf

    在学习部编版三年级下册语文第五单元时,学生需要掌握以下几个核心知识点: 1. **易读错的字**:正确读音是关键。如"栅zhà栏"、"悠yōu闲"、"揉róu"、"唯wéi一"、"痒yǎng"、"鳄è鱼"、"丁零líng"、"香肠cháng...

    c语言编写单片机技巧

    而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。 如果对单片机C语言有...

    FlappyBird-Game:使用Unity引擎创建的Flappy Bird克隆

    Flappy Bird是一款简单却极具挑战性的手机游戏,其成功在于其直观的控制方式和令人上瘾的游戏机制。 在Unity中创建Flappy Bird游戏,首先要掌握以下几个核心知识点: 1. **场景设置**:游戏开发的第一步是建立游戏...

    大学最新英语六级词汇

    令人愉快的天气让这次旅行变得愉快。 30. **alas** [2'l9s] int. 唉 - 例如:Alas, we have to part ways. 唉,我们必须分道扬镳。 31. **album** ['9lb2m] n. 相册 - 例如:She keeps all her photos in an ...

    吉林省通化市2015届九年级英语上学期第二次月考试题(无答案) 人教新目标版 试题.doc

    - (9) a ________ programme: 需要用形容词“pleasant”,表示“我们都认为那是一个令人愉快的节目”。 - (10) to ________: 需要用动词原形“succeed”,表示“你一定会有一天成功”。 3. 选择填空(考查语法、...

    金识源六年级语文下册 26《鹤群翔空》习题 鲁教版五四制-鲁教版五四制小学六年级下册语文试题.doc

    8. 与鹤群对话:你们的团结和互助令人感动,愿你们永远和谐共处。 9. 选文的小标题可以是"救伤鹤的瞬间",突出了鹤群的互助行为。 10. "精疲力竭" 和 "缓缓下坠" 不能互换,因为"精疲力竭"描述状态,"缓缓下坠...

Global site tag (gtag.js) - Google Analytics