Smalltalk не распознает объявленные временные переменные

Так что я совсем новичок, когда дело доходит до Smalltalk, и сейчас я пишу очень простое приложение с графическим интерфейсом. Все, что делает это приложение, — складывает вместе два операнда из двух полей ввода и отображает сумму в третьем поле ввода, доступном только для чтения.

У меня возникли проблемы с распознаванием VisualWorks временных переменных, которые я уже объявил.

Я пытаюсь выделить любую строку с объявленной временной переменной, и он говорит, что такая переменная не была объявлена; хочу ли я объявить его как временный, экземпляр, общий и т. д. Это особенно странно, потому что метод может быть принят и даже прочитан, когда я запускаю его с помощью графического интерфейса (хотя у меня есть проблема с преобразованием переменных в целые числа ), но если я хочу напечатать или проверить любую строку с объявленной временной переменной, он скажет, что не распознает ее как таковую, и хочу ли я объявить ее так или иначе.

Код:

add
"adds two input fields"

| op1 op2 result |

op1 := #InputOperand1 value asInteger.
op2 := #InputOperand2 value asInteger.

result := op1 + op2.

^result

Любые идеи?


person Gthoma2    schedule 03.10.2012    source источник


Ответы (1)


Проблема в том, что компилируется и оценивается только выбранный вами текст. Если вы выбираете только одну строку, объявления переменных не включаются в скомпилированный код. Если вы выберете для оценки все тело метода (не включая сигнатуру метода), все должно работать нормально. Другой вариант — просто выбрать «создать временный файл» при появлении запроса компилятора, а затем вернуться к сохраненной версии метода, чтобы избавиться от дополнительного временного объявления.

person Colin Putney    schedule 03.10.2012
comment
Также для игры и проверки временных результатов, как это было предложено в исходном вопросе, отладчик, вероятно, намного лучше и удобнее. - person Davorin Ruševljan; 03.10.2012