2017-10-19 5 views
3

En Python, il est facile de créer un ensemble d'objets uniques, non-ordonnée avecComment représenter un ensemble ou un dictionnaire dans une chapelle?

>>> s = set() 
>>> s.add("table") 
>>> s.add("chair") 
>>> s.add("emu") 
>>> s 
set(['emu', 'table', 'chair']) 

Je sais que la chapelle a des domaines, mais est-il approprié d'utiliser ceux-ci comme des ensembles? Y a-t-il des pièges? Que diriez-vous des dictionnaires?

Répondre

5

Tous les domaines de la chapelle sont des ensembles, mais « domaines associatifs » peuvent être utilisés comme des ensembles:

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 

Comme ensembles python, contrôles domaines associatifs d'adhésion de soutien et l'union, la différence, les opérations d'intersection (entre autres). See the online docs for more information. Par défaut, les domaines associatifs peuvent être utilisés en toute sécurité en parallèle.

Les 'tableaux associatifs' de Chapel sont similaires aux dictionnaires python. Les tableaux de chapelle sont un mappage d'indices en éléments, de sorte que nous pouvons créer un tableau associatif avec un domaine associatif:

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