The Kai Way

Pragmaticly hacking

一日一D(1)

| Comments

通过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