如何检查域是否包含 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
假设我有一个稀疏域,我想检查是否添加了一个元素。
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