yidabu 2007-4-26 19:21
D语言基础之Declarations,Types,Properties
D语言基础之Declarations,Types,Properties知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070426点击下面网址查看原文:http://www.d-programming-language-china.org by: 燕良 from: http://blog.csdn.net/yanonsoftware/archive/2007/01/07/1476393.aspx 首先需要熟悉一下D语言。D语言目前还没有什么书(有一本日文的,不知道小日本怎的对D这么热衷),所能参考的就是D语言的官方文档啦。不太适合编程的初学者,对于有一定变成经验的人来说,倒是挺合适的。英文原文从DMD官方网站可以找到:http://www.digitalmars.com/d/ ;中文翻译:http://blog.csdn.net/uframer/ 。 下面的源码就是针对D语言文档中的没一节中的要点编写的,这是前面三节Declarations,Types,Properties中的主要概念,着重与C/C++不同的地方,并且加入了详细的中文注释。把下面的代码拷贝到一个文本文件中,主要,要存成unicode编码格式才能编译通过。 [Copy to clipboard] [ - ]CODE: import std.stdio; // 引入D语言的标准io库, 它是"dmdlibphobos.lib"的一部分; 库文件的查找由sc.ini中的LIB环境变量指定. void main() { try { tryDeclarations(); tryTypes(); tryProperties(); } catch(Exception e) { writefln("There is an error:"); } } //参考"dmdhtmlddeclaration.html" void tryDeclarations() { // D语言中的变量在会初始化为默认值 int myInt; uint myUint; float myFloat; writefln("default of int = ",myInt, ", default of uint = ", myUint, ", default of float = ", myFloat); // 声明是从右向左读的 writef("This is an array : "); int[4] myArray; foreach(int i,int e;myArray)//如果下标越界,则会抛出一个Exception writef(i, " = ", e,", "); writefln(); //auto关键字 auto myAuto = 99; writefln("this is an auto var, sizeof = ", myAuto.sizeof, ", value = ", myAuto); typedef int MYINT; //typedef是强类型的 alias int MYINITA; //alias对于类型系统则与原来的类型相同 } //参考"dmdhtmld ype.html" void tryTypes() { //enum可以指定数据类型 enum ETest : ubyte { ET_One, ET_Two } //使用cast关键字进行显示类型转换 int a = -1; uint b = cast(uint)a; writefln("b = ", b); //function关键字用来声明函数指针 void function(/**//*参数列表*/) myFunctionPtr; myFunctionPtr = &tryDeclarations;//指向一个函数 writefln("myFunctionPtr = ", myFunctionPtr); //delegate可以指向类的成员函数 } //参考dmdhtmldproperty.html void tryProperties() { //每种type都有相同的一些property writefln("float.sizeof = ", float.sizeof, ", byte.init = ",byte.init, ", int.max = ", int.max, ", uint.max = ",uint.max); //class和struct可以有property成员 struct Foo { int data() { return m_data; } // read property int data(int value) { return m_data = value; } // write property private: int m_data; } Foo f; f.data = 3; // same as f.data(3); f.data = f.data + 3; // same as f.data() + 3; writefln("f.data = ",f.data); } ( lastupdate:20070426 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台