Title here
Summary here
range iterates over elements in a variety of built-in data structures. Let’s see how to use range with some of the data structures we’ve already learned.
// Chapel program that demonstrates range over built-in types
// Sum the numbers in a list.
var nums = [2, 3, 4];
var sum = 0;
for num in nums {
sum += num;
}
writeln("sum: ", sum);
// Using range with indices
for (i, num) in zip(nums.domain, nums) {
if num == 3 {
writeln("index: ", i);
}
}
// Iterating over key/value pairs in a map.
var kvs = ["a" => "apple", "b" => "banana"];
for (k, v) in kvs {
writeln(k, " -> ", v);
}
// Iterating over just the keys of a map.
for k in kvs.keys() {
writeln("key: ", k);
}
// Iterating over characters in a string
for (i, c) in zip(0..#'go'.localeToIndex('go'), 'go'.codepoints()) {
writeln(i, " ", c);
}To run the program, save the code in a file with a .chpl extension and use the chpl compiler to compile and run it.
$ chpl example.chpl -o example
$ ./example
sum: 9
index: 1
a -> apple
b -> banana
key: a
key: b
0 103
1 111Chapel’s for loops and iterations provide powerful and flexible ways to work with various data structures. Let’s dive into more advanced features of the language in the next examples.
Comments powered by Disqus