Я столкнулся с этим сегодня, и мне было интересно, если что-то здесь не так.
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 = {};
Итак, вопрос в том, почему он должен быть инициализирован в объявлении?