迭代D中关联数组中的键/值对。
我不知道为什么我在网上找不到答案。这似乎是一件很简单的事情 关联数组有一个迭代D中关联数组中的键/值对。,d,D,我不知道为什么我在网上找不到答案。这似乎是一件很简单的事情 关联数组有一个byValue成员和一个byKey成员,用于迭代值和键。还有一个byKeyValue成员用于迭代键/值对。只是不清楚使用foreach进行迭代时返回的类型,编译器抱怨auto在这里不够好 语言docs()称之为“不透明类型” 你知道如何让注释过的代码工作吗?谢谢大家! int main(){ int[string] contained; contained["foo"] = 4; contained["bar
byValue
成员和一个byKey
成员,用于迭代值和键。还有一个byKeyValue
成员用于迭代键/值对。只是不清楚使用foreach
进行迭代时返回的类型,编译器抱怨auto
在这里不够好
语言docs()称之为“不透明类型”
你知道如何让注释过的代码工作吗?谢谢大家!
int main(){
int[string] contained;
contained["foo"] = 4;
contained["bar"] = 5;
contained["gooey"] = 7;
writeln("*by values*");
foreach(int i ; contained.byValue){
writeln(i);
}
writeln("*by keys*");
foreach(string i ; contained.byKey){
writeln(i);
}
// writeln("*by key/values*");
//foreach(auto i ; contained.byKeyValue){
//writeln(i.key,i.value);
//}
return 0;
}
首先,你甚至不需要什么东西:
foreach(key, value; contained) {
// use right here
}
但是.byKeyValue可以更有效,所以使用它很酷。。。只是根本不需要指定类型(事实上,您很少需要使用D的foreach,顺便说一句,在foreach语句中使用auto
,这是一个常见的错误,因为它在许多其他地方都使用过…)
另外,如果您总是希望
main
返回0
,您也可以使用void main
——该语言将自动执行该操作。因此,首先,您甚至不需要任何东西:
foreach(key, value; contained) {
// use right here
}
但是.byKeyValue可以更有效,所以使用它很酷。。。只是根本不需要指定类型(事实上,您很少需要使用D的foreach,顺便说一句,在foreach语句中使用auto
,这是一个常见的错误,因为它在许多其他地方都使用过…)
另外,如果您总是希望
main
返回0
,也可以使用void main
——该语言将自动执行该操作。谢谢!与广告完全一样。有趣的后续报道。显然,返回类型是显式隐藏的,以封装来自用户空间的类型。在D维基上有一个关于它的部分()谢谢!与广告完全一样。有趣的后续报道。显然,返回类型是显式隐藏的,以封装来自用户空间的类型。在D wiki()上有一个关于它的部分