如何检查域是否包含 Chapel 中的元素

How to check if a domain contains an element in Chapel

假设我有一个稀疏域,我想检查是否添加了一个元素。

var D = {1..5, 1..5},
    SD: sparse subdomain(D);

SD += (1,3);

现在我想看看 (1,3)(2,3) 是否在 SD 中。这是不正确的,this page 不是 .contain() 的例子。哈!看到我在那里做了什么吗?

//Don't do this
SD.contains(1,3)  // want true;
SD.contains(2,3)  // want false;

Chapel 中的域都支持带有签名 member(i:idxType ...rank) 的方法,如果指定的索引是域的成员,则 returns true 否则 false 。这包括关联域、不透明域、矩形域和稀疏域。每种类型的示例如下:

关联:

var D: domain(string);
D += "hello";

writeln("Associative");
writeln(D.member("world")); // false
writeln(D.member("hello")); // true

不透明:

var D: domain(opaque);
var i1 = D.create();
var i2: i1.type;

writeln("Opaque");
writeln(D.member(i2)); // false
writeln(D.member(i1)); // true

矩形:

  var D = {1..4, 3..5};

  writeln("Rectangular");
  writeln(D.member(2,6)); // false
  writeln(D.member(3,3)); // true

稀疏:

  var D = {1..10, 1..10};
  var SD: sparse subdomain(D);
  SD += (2,3);

  writeln("Sparse");
  writeln(SD.member(2,7)); // false
  writeln(SD.member(2,3)); // true