16用d编程编程环境
main()可有string[]参数
可用std.getopt取命令.
import std.stdio;
import std.getopt;
import std.random;
void main(string[] args) {
int count;
int minimum;
int maximum;
getopt(args,"count", &count,"minimum", &minimum,"maximum", &maximum);
//可改进如下.
getopt(args,"count|c", &count,"minimum|n", &minimum,"maximum|x", &maximum);
//即-c 等价于--count
foreach (i; 0 .. count) {
write(uniform(minimum, maximum + 1), ' ');
}
writeln();
}
取环境变量.
import std.stdio;
import std.process;//访问环境变量
void main() {
writeln(environment["PATH"]);
}
将之转为aa
string[string] envVars = environment.toAA();
启动其他函数,类似c++的系统,py的os.system.
import std.stdio;
import std.process;//执行命令
void main() {
const result = executeShell("ls -l deneme");
//执行壳命令.
const returnCode = result[0];
const output = result[1];
writefln("ls 返回 %s.", returnCode);
writefln("输出:\n%s", output);
}
main虽然是void,返回的也是成功为0,失败为非0.
import std.stdio;
int main(string[] args) {
if (args.length != 3) {
stderr.writefln("错误! 正确用法:\n" ~"%s 词1 词2", args[0]);
return 1;
}
writeln(args[2], ' ', args[1]);
return 0;
}
stderr,类似stdout,都输出在控制台.
异常,没啥看头,不喜欢.try-catch-finally.出错就重新改.
scope语句,三个:
scope(exit,成功,失败),后两个成功或失败后执行.第一个退出域时则执行.失败指出现异常.可以写成块.其实就是函数版的析构函数
断定(logical_expression);
断定(logical_expression,message);
//上面为语法.断定必须成立,否则运行失败
double averageAge(double first, double second) {
assert(first >= 0);
assert(second >= 0);
return (first + second) / 2;
}
void main() {
auto result = averageAge(-1, 10);
}
//下面是未达分支,或无效分支.
} else {
assert(false);//到达这里,就是失败.
}
static assert编译时必须成立的断定.这相当于说是前提条件.没有前提条件,程序就可以退出了.
断定在单元测试/合同编程中很重要.
-release开关,会在发布版本中删掉断定.而断定(假)的地方不会删除.表示不可达.
enforce确保抛异常.如果不满足条件,就抛.
不能完成任务,就抛异常.
异常是错误,但不是所有错误都是异常.
异常是可以恢复的错误.经过处理后就正常了.
浙公网安备 33010602011771号