2017-04-13 9 views
0

現在に取り組んでおり、アレイタイプのhiを反復処理しようとしている:eltTypeは、要素と呼ばれ、それはそれの要素を持っています。チャペル反復

Cannot iterate over values of type int(64)

わからない:私は、私はこのエラーを取得することをしようとすると

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

:私は、全体の配列hiを反復処理し、私がやっているように、各要素をプリントアウトしようとしています

それを反復する方法、またはこのエラーが発生している理由。
アイデアやガイドはありますか?私はChapel APIを見てきました。

答えて

3

'hi'は整数です(配列のサイズを格納するため)。コードサンプルにバグがあります。あなたは、例えば、foralli in 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

を参照してください。