如何在教堂中表示集合或字典?

时间:2017-10-19 18:44:33

标签: dictionary chapel

在Python中,使用

创建一组唯一的,无序的对象很容易
>>> s = set()
>>> s.add("table")
>>> s.add("chair")
>>> s.add("emu")
>>> s
set(['emu', 'table', 'chair'])

我知道Chapel有域名,但将它们用作集合是否合适?有没有陷阱?字典怎么样?

1 个答案:

答案 0 :(得分:5)

并非所有Chapel域都是集合,而是'关联域'可以用作套装:

var s : domain(string);
s.add("table");
s.add("chair");
s.add("emu");
writeln(s); // {chair, table, emu}
var t = {"table", "chair", "emu"}; // associative domain literal

与python集一样,关联域支持成员资格检查和联合,差异,交集操作(以及其他)。 See the online docs for more information.默认情况下,关联域可以安全地并行使用。

Chapel'关联数组'类似于python词典。教堂数组是从索引到元素的映射,因此我们可以创建一个具有关联域的关联数组:

var inds = {1, 2, 3, 7, 42};
var map : [inds] string;

map[3] = "foo";
map[42] = "bar";

inds.add(100); // add new index and element
assert(map[100] == "");
map[100] = "baz";

var lit = ["bob" => 1, "alice" => 2]; // assoc. array literal