Pragma比较简单,常用的两种:
pragma(msg, "compiling...");
pragma(lib, "foo.lib");
关于Expressions,Statements还是看代码吧。
pragma(msg, "compiling...");
pragma(lib, "foo.lib");
关于Expressions,Statements还是看代码吧。
import std.stdio;
void main()
{
tryExpressions();
tryStatements();
}
class MyClass
{
char[] toString()
{
return "hehe";
}
char[] objectToString()
{
return super.toString(); //调用父类Object的方法
}
}
void tryExpressions()
{
//new, delete
MyClass ci = new MyClass;
delete ci;
writefln(ci); // delete会自动设为null
// cast
int c1 = -1;
byte b1 = cast(byte)c1;
c1 = 266;
byte b2 = cast(byte)c1;
writefln("b1 = ", b1,
",b2 = ", b2);
// Slice
int[] a1 = [5,6,7,8,9];
int[] a2 = a1[0..2];
int[] a3 = a1[$-2..$]; // $相当于length
writef("a2: ");
for(int i=0; i<a2.length; i++)
writef(a2[i],',');
writef(" a3: ");
for(int i=0; i<a3.length; i++)
writef(a3[i],',');
writefln(" last in a1 = ", a3[$-1]);
// super
MyClass mc = new MyClass;
writefln(mc.toString());
writefln(mc.objectToString());
// 字符串初始化
char[] szChinese = "中文";
writefln(szChinese);
// 初始化数组
int[4] myArray = [2,3,5,7];
// assert(0,"this is a error msg");//Error: AssertError Failure D:DHello ryd3.d(8) this is a error msg
// typeid返回一个TypeInfo的实例
TypeInfo t = typeid(int);
char[] szTypeName = t.toString();
writefln(szTypeName);
TypeInfo t2 = typeid(MyClass);
char[] szTypeName2 = t2.toString();
writefln(szTypeName2);
// is功能很多
bool s1 = is(int[]);
// .....
}
void tryStatements()
{
// foreach
char[] myStr = "abcd";
foreach(char c; myStr)
writef(c,", ");
writefln();
foreach(int i,inout char c; myStr)//i是index,inout关键字相当于引用
{
c += i;
writef(c,", ");
}
writefln();
foreach_reverse(char c; myStr)
writef(c,", ");
writefln();
// switch可以匹配字符串
myStr = "abc";
switch(myStr)
{
case "affx":
writefln("??");
break;
case "abc":
writefln("ok");
break;
}
// with
}
void main()
{
tryExpressions();
tryStatements();
}
class MyClass
{
char[] toString()
{
return "hehe";
}
char[] objectToString()
{
return super.toString(); //调用父类Object的方法
}
}
void tryExpressions()
{
//new, delete
MyClass ci = new MyClass;
delete ci;
writefln(ci); // delete会自动设为null
// cast
int c1 = -1;
byte b1 = cast(byte)c1;
c1 = 266;
byte b2 = cast(byte)c1;
writefln("b1 = ", b1,
",b2 = ", b2);
// Slice
int[] a1 = [5,6,7,8,9];
int[] a2 = a1[0..2];
int[] a3 = a1[$-2..$]; // $相当于length
writef("a2: ");
for(int i=0; i<a2.length; i++)
writef(a2[i],',');
writef(" a3: ");
for(int i=0; i<a3.length; i++)
writef(a3[i],',');
writefln(" last in a1 = ", a3[$-1]);
// super
MyClass mc = new MyClass;
writefln(mc.toString());
writefln(mc.objectToString());
// 字符串初始化
char[] szChinese = "中文";
writefln(szChinese);
// 初始化数组
int[4] myArray = [2,3,5,7];
// assert(0,"this is a error msg");//Error: AssertError Failure D:DHello ryd3.d(8) this is a error msg
// typeid返回一个TypeInfo的实例
TypeInfo t = typeid(int);
char[] szTypeName = t.toString();
writefln(szTypeName);
TypeInfo t2 = typeid(MyClass);
char[] szTypeName2 = t2.toString();
writefln(szTypeName2);
// is功能很多
bool s1 = is(int[]);
// .....
}
void tryStatements()
{
// foreach
char[] myStr = "abcd";
foreach(char c; myStr)
writef(c,", ");
writefln();
foreach(int i,inout char c; myStr)//i是index,inout关键字相当于引用
{
c += i;
writef(c,", ");
}
writefln();
foreach_reverse(char c; myStr)
writef(c,", ");
writefln();
// switch可以匹配字符串
myStr = "abc";
switch(myStr)
{
case "affx":
writefln("??");
break;
case "abc":
writefln("ok");
break;
}
// with
}