Как преобразовать число в строку в 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
Он использует текущие настройки локали в изображении.