参考自d程序设计语言---我的博客http://my.oschina.net/u/218155/blog?fromerr=SwOkb7Sw fllow me
D语言的语句的语法和c语言和java基本一致,只是有些特别的东西
if else while for do while 之类的同c,java一致,不再赘述。
看看一些特别的
定义内部变量,在函数内部定义内部变量不能重新声明可以复制
int ib = 12;
{
//int ib = 12;//error
ib = 112;
}
静态条件编译,有点c中的类似#ifdef #endif
只是static if里面的值只能是全局的,确定值的变量
//static if(ib > 100){//error
static if(ShowStatic.max > ShowStatic.min){
writeln("staic 1");
}else{
writeln("static 2");
}
final switch强制覆盖所有分支
final switch(s1){
case ShowStatic.min:
writeln("min");
break;
case ShowStatic.max:
writeln("max");
break;
}
用with定义结构的变量
point p;
with(p){
x = 1;
y = 2;
}
退出时执行的scope(success) scope(faild) 他们采用栈的方式退出,下面代码会输出sucess2,sucess1
scope(success){
writeln("sucess1");
}
scope(success){
writeln("sucess2");
}
import std.stdio;
int a = 1;
enum ShowStatic {min,max};
struct point {
int x,y;
}
void main() {
a = 2;
//定义内部变量
writeln(a);
{
int a = 1;
writeln(a);
}
writeln(a);
int ib = 12;
{
//int ib = 12;//error
ib = 112;
}
writeln(ib);
if( ib > 100){
writeln("ib > 100");
}else{
writeln("ib <= 100");
}
//static if(ib > 100){//error
static if(ShowStatic.max > ShowStatic.min){
writeln("staic 1");
}else{
writeln("static 2");
}
switch(a){
case 1:
writeln("1 case");
break;
case 2:
writeln("2 case");
break;
default:
writeln("other case");
break;
}
enum ShowStatic s1 = ShowStatic.min;
final switch(s1){
case ShowStatic.min:
writeln("min");
break;
case ShowStatic.max:
writeln("max");
break;
}
auto i = 1;
do{writeln(i);i++;}while(i<3);
i = 1;
while(i<3){writeln(i);i++;}
for(i = 1;i<3;i++)writeln(i);
foreach(elem;1..3)writeln(elem);
int a[] = [1,2,3];
foreach(ref elem;a){
elem *= 2;
}
writeln(a);
auto arr = ["k":1,"d":2];
foreach(string k,ref int v;arr){
writeln(k,",",v);
v *= 2;
}
writeln(arr);;
point p;
with(p){
x = 1;
y = 2;
}
try{
}catch(Exception e){
}
finally{
}
//mixin
//mixin(import("mixin.d"));
scope(success){
writeln("sucess1");
}
scope(success){
writeln("sucess2");
}
}