Неизвестная переменная, если она не инициализирована в объявлении

Я столкнулся с этим сегодня, и мне было интересно, если что-то здесь не так.

module example

public rel[str file, AstNode namespace] relFileNamespace;
public void InitGlobals()
{
    relFileNamespace = {};
}

Затем в консоли:

rascal>import example;
ok

rascal>InitGlobals();
ok

rascal>relFileNamespace
|stdin:///|(0,13,<1,0>,<1,13>): Undeclared variable, function or constructor: relFileNamespace

Если я объявлю это так, это действительно сработает.

public rel[str file, AstNode namespace] relFileNamespace = {};

Итак, вопрос в том, почему он должен быть инициализирован в объявлении?


person Richard Bos    schedule 26.04.2013    source источник


Ответы (1)


  • Rascal вообще не допускает неинициализированные переменные, но в этом случае он должен жаловаться на «неинициализированные», а не на «необъявленные»
  • Он не находит вашу переменную. Не могли бы вы попробовать добавить «example::» перед разыменованием?
person Jurgen Vinju    schedule 26.04.2013
comment
Действительно, ошибка копирования. Обновил. - person Richard Bos; 26.04.2013
comment
Если мошенник не позволяет этого, может быть, тогда это должна быть синтаксическая ошибка? - person Richard Bos; 26.04.2013
comment
Добавление example:: не дает разных результатов. - person Richard Bos; 01.05.2013