Skip to main content
The Kai Way

一日一D(1)

通过D语言的项目主页dsource.org上的基础教程,来学习D语言吧。。。

D语言已经到了2.0,DMD也到了2.0a,不过很多项目还是只支持到DMD1.0。不过也可以用另一个编译器GNU的DGC。D语言有两个标准库,默认C风格的Phobos和C++风格的Tango。更多的项目都是基于Tango开发的,一些基于Phobos的项目也开始向着Tango转移。从这里可以看出D语言的主要受众是原C/C++的用户。

这次有三个示例代码,三个示例: 第一个是Helloworld

import std.stdio; void main() { nbspwritef("Hello"); }

可以看到这里用的是std.stdio中的输出方法writef(),一个很类似C的printf的方法,可以对输出进行格式化。

第二个示例展示的是代码的赋值,传统的类C式风格。

import std.stdio; int magicNumber = 42; char[6u] password = "sesame"; void main() { writefln("Magic number: ", magicNumber); writefln("Password: ", password); }

这里要注意的是由于D语言是原生支持utf8的,所以在数组中可以使用nu这样的数量表示。

第三个例子是展示D语言的数据类型。

import std.stdio; int main() { // Show information about integer types... writefln("bool\tmin: %d\tmax: %d (%d)", bool.min, bool.max, bool.sizeof); writefln("ubyte\tmin: %d\tmax: %d (%d)", ubyte.min, ubyte.max, ubyte.sizeof); writefln("ushort\tmin: %d\tmax: %d (%d)", ushort.min, ushort.max, ushort.sizeof); writefln("uint\tmin: %d\tmax: %d (%d)", uint.min, uint.max, uint.sizeof); writefln("ulong\tmin: %d\tmax: %d (%d)\n", ulong.min, ulong.max, ulong.sizeof); writefln("byte\tmin: %d\tmax: %d (%d)", byte.min, byte.max, byte.sizeof); writefln("short\tmin: %d\tmax: %d (%d)", short.min, short.max, short.sizeof); writefln("int\tmin: %d\tmax: %d (%d)", int.min, int.max, int.sizeof); writefln("long\tmin: %d\tmax: %d (%d)\n", long.min, long.max, long.sizeof);

// Show information about floating-point types... writef("float (%d)\tdouble (%d)\treal (%d)\t", float.sizeof, double.sizeof, real.sizeof); writef("ifloat (%d)\tidouble (%d)\tireal (%d)\t", ifloat.sizeof, idouble.sizeof, ireal.sizeof); writef("cfloat (%d)\tcdouble (%d)\tcreal (%d)\t", cfloat.sizeof, cdouble.sizeof, creal.sizeof);

// Show information about character types... writef("char (%d)\twchar (%d)\tdchar (%d)\t", char.sizeof, wchar.sizeof, dchar.sizeof); return 0; }

这里就看到了std.stdio.writefln()方法的格式化功能。每种数据类型都有min和max,sizeof属性,这就是D语言的特性之一的原生属性支持(现代面向对象思想)。其中,浮点数里以i开头的表示复数中的虚部,以c开头就是复数,没有前缀的就是实数,而float,double,real的精度逐渐递减,c开头的浮点数类型的长度是无前缀的和以i开头的浮点数的长度之和。字符中,无前缀的char是utf8编码的,8位,w开头的wchar是utf16的,16位,d开头的dchar是utf32,32位。具体的D语言的数据类型可以参看D语言规范中关于数据类型的部分

可以看到D语言的语句还是比较面熟的,是最流行的C风格。在之后的“一日一DD”中会继续看代码学D语言的。

代码来自TutorialFundamentals