假设,只是一分钟,然后回到你的一天,我在Chapel中有两个字符串域,我想获得所有对的字符串域。
var dd: domain(string), sd: domain(string);
dd += "Monday"; dd+="Tuesday"; dd+="Wednesday";
sd += "Rainy"; sd+= "Sunny";
var crossDomain = // 6 strings like "Monday-Rainy", "Monday-Sunny"
我可以做嵌套for
循环,但我想知道是否有更简洁的方法。
答案 0 :(得分:3)
我认为嵌套for或for循环是一个不错的选择:
for day in dd do
for cond in sd do
crossDomain += (day + "-" + cond);
另一种方法是编写一个迭代器来使循环远离代码:
for (day,cond) in allpairs(dd, sd) do
crossDomain += (day + "-" + cond);
iter allpairs(d1, d2) {
for i in d1 do
for j in d2 do
yield (i,j);
}
这需要稍多的代码,但是有一个优点,即如果你在代码中多次执行这种全对模式,你可以多次重复使用迭代器。请注意,如果您愿意,迭代器也可以直接生成连接字符串。