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

08-26 11:50