Chapel是否具有等效的C++ / Java静态类字段,其值在类对象之间共享?如果没有,该怎么办?
最佳答案
Chapel不支持等效的静态类字段。但是,它确实支持等效的静态类方法,在Chapel中称为type methods。
如果在Chapel中需要一个静态类字段,则可以使用无括号的方法返回全局定义的变量以达到类似效果,例如
var globalValue = 42;
class C {
var a = 1;
proc b {
return globalValue;
}
}
var c1 = new owned C(1);
var c2 = new owned C(2);
writeln(c1.a);
writeln(c1.b);
writeln(c2.a);
writeln(c2.b);
globalValue += 1;
writeln(c1.a);
writeln(c1.b);
writeln(c2.a);
writeln(c2.b);
输出:
1
42
2
42
1
43
2
43