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来遍历数组:
None.gif foreach  ( int  index,  int  value; a)
None.gif  printf (
" %d: %d\n " , index, value);
None.gif
foreach  ( char [] key,  int  value; a)
None.gif  printf (
" %.*s: %d\n " , index, value);

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

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

等等。。。。

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

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

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

或者:
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编译器编译。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值