首页 > 解决方案 > Chapel 中的静态类字段

问题描述

Chapel 是否具有等效于 C++/Java 静态类字段,其值在类对象之间共享?如果没有,应该怎么办?

标签: staticchapel

解决方案


Chapel 不支持等效的静态类字段。但是,它确实支持等效的静态类方法,在 Chapel中称为类型方法。

如果需要 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

推荐阅读