Как преобразовать число в строку в Smalltalk (визуальные работы)

У меня возникают трудности с поиском информации о том, как получить строковое представление числа в Cincom Smalltalk. Как это выполняется на этом языке? В частности, я пишу строковое представление объекта, аналогично функции toString в Java.

4 ответа

Решение

Метод printString предназначен для возврата строки, позволяющей программисту интерпретировать число. Если бы вы использовали 3.14d в вашем примере (двойник), вы бы увидели символ 'd' в printString.

Это хорошо для разработчиков, но если вы создаете пользовательский интерфейс для других людей, вы должны использовать PrintConverter. Вот пример:

(PrintConverter for: #number withFormatString: '$#,###.##;[RED]($#,###.##);$0.00')
formatStringFor: -35675.389d

Если вы посмотрите на результат, вы увидите, что в скобках отображается красный текст (потому что он отрицательный) и округляется до двух десятичных знаков с ведущим знаком доллара. Это гораздо лучший вид номера для отображения в пользовательском интерфейсе. Для получения информации о форматировании символов см. Комментарий класса для NumberPrintPolicy.

После дальнейшего исследования нужное сообщение printString, Например,

| str num |
num := 3.14.
str := 'An approximate value of pi is ', (num printString).

Чтобы преобразовать любой объект в читаемую пользователем строку, используйте "asString".

| str num |
num := 3.14.
str := 'An approximate value of pi is ', num asString.

Многие методы String автоматически преобразуют значение своего параметра в String, поэтому вам не нужно вызывать / отправлять / что бы то ни было явно:

| str num |
num := 3.14.
str := 'An approximate value of pi is ', num .

(протестировано с ObjectStudio 8.3.1, Windows Smalltalk на основе Visualworks; но примеры должны работать с любым доступным Smalltalk)

Правильно:

Locale current printAsNumber: 1

Он использует текущие настройки локали в изображении.

Другие вопросы по тегам