2

我很难找到有关如何在 Cincom Smalltalk 中获取数字的字符串表示形式的信息。这是如何用这种语言执行的?具体来说,我正在编写对象的字符串表示形式,类似于 Java 中的 toString 函数。

4

4 回答 4

4

经过进一步研究,需要的消息是printString. 例如,

| str num |
num := 3.14.
str := 'An approximate value of pi is ', (num printString).
于 2013-09-30T21:49:35.063 回答
4

printString 方法旨在返回一个字符串以允许程序员解释该数字。如果您在示例中使用 3.14d(一个 Double),您会在 printString 中看到“d”字符。

这对开发人员来说很好,但如果您正在构建一个供其他人使用的用户界面,您应该使用 PrintConverter。这是一个例子:

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

如果您检查结果,您会看到括号中的红色文本(因为它是负数)并四舍五入到小数点后两位,并带有前导美元符号。这是为用户界面显示的一种更好的数字。有关格式化字符的信息,请参阅 NumberPrintPolicy 的类注释。

于 2013-10-01T01:50:38.067 回答
3

要将任何对象转换为用户可读的字符串,请使用“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 进行测试,这是一个基于 Visualworks 的 Windows smalltalk;但这些示例应该适用于任何可用的 smalltalk)

于 2013-10-01T07:02:52.307 回答
0

正确的方法:

Locale current printAsNumber: 1

它使用图像中的当前区域设置。

于 2013-10-04T17:46:02.507 回答