假设我有一个稀疏域,我想检查是否添加了一个元素。
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;
答案 0 :(得分:4)
Chapel中的域都支持带有签名member(i:idxType ...rank)
的方法,如果指定的索引是域的成员,则返回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