import std.stdio;
import std.random;
void main() {
int number = uniform(1, 101);//`std.random`中
writeln("I am thinking of a number between 1 and 100.");
int guess;
do {
write("What is your guess? ");
readf(" %s", &guess);
if (number < guess) {
write("My number is less than that. ");
} else if (number > guess) {
write("My number is greater than that. ");
}
} while (guess != number);
writeln("Correct!");
}
关联数组:就是c++的无序映<,>
.
// key : value
int[string] dayNumbers =
[ "Monday" : 0, "Tuesday" : 1, "Wednesday" : 2,
"Thursday" : 3, "Friday" : 4, "Saturday" : 5,
"Sunday" : 6 ];
writeln(dayNumbers["Tuesday"]); // prints 1
//在
int[string] colorCodes = [ /* ... */ ];
if ("purple" in colorCodes) {//在
// key "purple" exists in the table
} else {
// key "purple" does not exist in the table
}
不在,取默认值:
int [string] colorCodes = [ "blue":10,"green":20];
writeln(colorCodes.get("purple",-1));
常用属性:
.length,长度
.keys,复制返回动态数组
.byKey,不复制,
.values,值,复制,动态
.byValue,不复制
.byKeyValue,不复制,
.rehash,再哈希,大量插入后,改一改,更有效
.sizeof,数组引用大小.
.get,取
.remove,删
.clear,清理所有
每一,迭代的是容器/区间/类
/
foreach (value; aa) {
writeln(value);
}//aa为关联数组
foreach (key; aa.byKey) {
writeln(key);
}//按键
foreach (element; aa.byKeyValue) {
writefln("The value for key %s is %s",
element.key, element.value);
}//按键值
foreach (number; 10..15) {
writeln(number);
}//数字区间,
structs, classes, and ranges
,也可以opApply
,来循环.
要这样用
foreach (ref number; numbers) {//加个引号
number *= 2;
}//不然,是复制的元素,不是自身
auto container = [ 1, 2, 3 ];
foreach_reverse (element; container) {
writefln("%s ", element);
}//逆向