Поля статического класса в часовне - PullRequest
3 голосов
/ 06 ноября 2019

Имеет ли Chapel эквивалент поля статического класса C ++ / Java, значение которого совместно используется объектами класса? Если нет, что делать?

1 Ответ

4 голосов
/ 06 ноября 2019

Часовня не поддерживает эквивалент полей статического класса. Тем не менее, он поддерживает эквивалент статических методов класса, называемых методы типа в 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
...