作为计算器的Smalltalk词典

作为计算器的Smalltalk词典,smalltalk,squeak,Smalltalk,Squeak,我正在做一个家庭作业,要求我们创建一个单元类,可以跟踪单元并对它们执行基本的算术运算。问题描述有这样一点,我不完全理解: 跟踪单位的最简单方法可能是给单位一个字典,将符号映射到整数。如果你除以一个单位,那么它在字典中有一个负值。通过将字典中每个符号的值相加,可以将两个单位相加。当它为零时,将符号扔掉 为了便于参考,这也包括在说明中: […]您可以编写一个表达式3大象/(1秒),它将返回正确的内容 有人能帮我照一下吗?如何使用字典映射这些类型的单位?我是不是让这条路变得更难了?听起来你的老师在给你

我正在做一个家庭作业,要求我们创建一个单元类,可以跟踪单元并对它们执行基本的算术运算。问题描述有这样一点,我不完全理解:

跟踪单位的最简单方法可能是给单位一个字典,将符号映射到整数。如果你除以一个单位,那么它在字典中有一个负值。通过将字典中每个符号的值相加,可以将两个单位相加。当它为零时,将符号扔掉

为了便于参考,这也包括在说明中:

[…]您可以编写一个表达式3大象/(1秒),它将返回正确的内容


有人能帮我照一下吗?如何使用字典映射这些类型的单位?我是不是让这条路变得更难了?

听起来你的老师在给你一个提示,告诉你如何在计算结束时得到正确的单位

在分析问题时,当您遇到明显是单元的项时,请将它们输入字典。字典将由一个数字和一个字符串(假定的“单位”)组成。然后使用一组规则来增加或减少整数计数。结果整数值将帮助您正确输出单位

计数为1表示它是输出中的一个单位。 计数为-1表示它与输出中的单位相反。 计数为0表示它根本不出现在输出中。 类似地,计数为2表示其平方在输出中显示为一个单位

也就是说:

5只河马+10只河马=15只河马

Parsing:       Dictionary:
--------       -----------
5 Hippo        Hippo:1
+
10 Hippo       Hippo:1  (previous operation was addition or subtraction, and already have Hippo in dictionary
但是考虑这个问题:

5 Hippo * 5 sec/Hippo = 25 sec

Parsing:       Dictionary:
5 Hippo        Hippo:1
*
5 sec          Hippo:1, sec:1
/
Hippo          Hippp:0, sec:1  (previous operation was division of Hippo, so decrement Hippo count)
或许:

10 feet / 5 sec = 2 feet/sec

Parsing:       Dictionary:
10 feet        feet:1
/
5 sec          feet:1, sec:-1  (divided by sec, and second is not in dictionary, so second implicitly = 0.  0 + (-1) = -1.

在上面的示例中,脚将位于杆的顶部,因为它等于1;秒将位于杆的下方,因为它的值为-1。如果它的值是-2,那么它应该是(英尺/(秒*秒)或英尺/(秒的平方)。

哇,这现在更有意义了。你能举一个例子说明什么时候值会是-1吗?我还是有点困惑。我不太明白。你能澄清一点吗?
计数-1表示它是输出中的一个单位。