教堂迭代



目前正在教堂工作并尝试遍历类型hi数组:eltType称为元素,其中包含元素。

我正在尝试遍历整个数组hi并打印出每个元素,所以我正在做:

var hi : int;
hi = elements.size;
forall i in hi
{
    writeln("Index: ", 0, " Element: ", elements[i]);
}

当我尝试时,我收到此错误:

无法循环访问 int(64( 类型的值

不确定如何循环访问它或为什么会发生此错误。
有什么想法或指南吗?我一直在看教堂API。

您的代码示例有一个错误,因为"hi"是一个整数(存储数组的大小(。例如,您可能的意思是"1..hi 中的所有我"。无论哪种方式,这里都有一个代码清单,其中包含此类迭代的一些常见模式。

// Declare a 1-D array storing 10, 20, 30
// Such array literals start at index 1
var elements = [10,20,30];
// Note: elements.domain is the index set of the array;
// in this case {1..3}.
writeln("loop 1");
// iterate over range, accessing elements
for i in 1..elements.size {
  writeln("Index: ", i, " Element: ", elements[i]);
}
writeln("loop 2");
// as above, but in parallel (output order will differ run to run)
forall i in 1..elements.size {
  writeln("Index: ", i, " Element: ", elements[i]);
}
writeln("loop 3");
// zippered iteration to iterate over array, indexes at once
for (element,i) in zip(elements,elements.domain) {
  writeln("Index: ", i, " Element: ", element);
}
writeln("loop 4");
// as above, but in parallel (output order will differ run to run)
forall (element,i) in zip(elements,elements.domain) {
  writeln("Index: ", i, " Element: ", element);
}

参见

http://chapel.cray.com/docs/latest/users-guide/base/forloops.html

http://chapel.cray.com/docs/latest/users-guide/base/zip.html

http://chapel.cray.com/docs/latest/primers/ranges.html

相关内容

  • 没有找到相关文章

最新更新