Только что попробовал это в Dolphin 6:
(Prompter prompt: 'Enter a number') asInteger
Запустите это (поместите курсор на вышеуказанное в рабочей области и нажмите Ctrl-D), введите 123 в появившейся подсказке, и вы увидите 123, отображаемое в качестве вывода. Если вы удалите вызов #asInteger, он будет отображать «123», указывая, что возвращена строка.
Что касается вашего «не понимает #number», это означает, что где-то в коде вы запускали сообщение #number как отправленное объекту, который не знал, как его обработать.
Ради забавы я взял твой код и немного переформатировал его:
| dir |
[ dir isNil or: [ dir isEmpty ] ] whileTrue:
[ dir:= Prompter prompt: 'Enter your number' caption: 'Input the Number' ].
MessageBox notify: 'your inputed number is ', (dir) caption: 'Inputed'.
и обнаружил, что все работает нормально. Затем я заметил, что он не преобразовал возвращаемую строку в число, поэтому я изменил ее на:
| dir |
[ ( dir isNil or: [ dir isEmpty ] ) or: [ (dir select: [ :c | c isDigit not ]) size > 0 ] ] whileTrue:
[ dir:= Prompter prompt: 'Enter your number' caption: 'Input the Number' ].
MessageBox notify: 'your inputed number is ', (dir) caption: 'Inputed'.
Это также прошло нормально, с дополнительным преимуществом, что он не будет принимать нечисловые символы.
Делись и наслаждайся.