smalltalk - Squeak Smalltalk,为什么有时简化的方法不起作用?

标签 smalltalk fractions squeak

(2332 / 2332) reduced 
(2332 / 2) reduced 
(2332 / 322) reduced  (1166/161)
(2332 / 3) reduced  (2332/3)
(2332 / 2432423) reduced  (2332/2432423)

看上面的代码。第一个和第二个打印出来后不起作用。弹出消息不理解窗口。第三、四、五代码都可以。结果是正确的。

为什么reduced方法不起作用?

是否是因为简化方法无法处理像 Uko 猜测这样的整数的最终结果?

最佳答案

/ 方法中的分数会自动减少。无需发送reduced消息。

例如如果打印结果

2 / 4

您会自动获得减少的(1/2)

如果打印结果

2332 / 2332

它被减少到1,这不是一个分数,而是一个整数,而整数不理解减少消息。这就是您收到错误的原因。

分数不会自动减少的唯一情况是当您手动创建它时,如下所示

Fraction numerator: 2 denominator: 4

它将回答非简化的(2/4)。但在普通算术表达式中,您永远不需要发送reduced

关于smalltalk - Squeak Smalltalk,为什么有时简化的方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46942103/

相关文章:

regex - 组的 gst 正则表达式不匹配会生成异常

Smalltalk 网页开发软件

virtual-machine - 如何在 Squeak 中加载 VMMaker?

smalltalk - 海边仍然是一个有效的选择吗?

startup - 如何防止 Pharo 执行类的 #startUp-Method?

java - 使用 setMinimumFractionDigits Java 计算分数

python - 计算循环小数的周期长度

javascript - 有没有减少分数的JavaScript函数

string - Smalltalk - 插入 TAB 字符 (Visual Works)

unit-testing - 如何在 Squeak 中自动化单元测试