2013-11-21 2 views
1

Я обнаружил, что в консоли Rascal после импорта модуля, который содержит определения глобальных переменных, эти глобальные переменные недоступны. Доступны только глобальные имена функций. Например, в следующем коде после импорта Foo в консоли я могу позвонить x(), чтобы получить 1, но разыменование x дает мне несвязанную переменную ошибку. Зачем?Глобальная переменная в модуле, недоступном после импорта модуля

module Foo 

int x = 1; 

int x() = 1; 

ответ

1

Глобалы по умолчанию private в Rascal, чтобы помешать вам легко делать такие гадости :-)

module Foo 

public int x = 1; 

int x() = 1; 

Это немного противоречиво, так как функция public по умолчанию, но не тогда, когда вы считаете, что мы в конечном итоге удалим глобальные языки с языка :-)

+0

Полностью удалять глобальные переменные звучит разумно. Но было бы неплохо иметь возможность определять глобальные константы. – day

+0

согласен, глобальные константы безвредны и полезны – jurgenv

Смежные вопросы