Smalltalk 我正在使用pharo2.0,我需要实现一个字典,其中必须映射符号,但我不知道如何实现它

Smalltalk 我正在使用pharo2.0,我需要实现一个字典,其中必须映射符号,但我不知道如何实现它,smalltalk,pharo,Smalltalk,Pharo,所以我想实现一个字典,在这里我可以把符号,比如#xyz,映射到一些数字值,比如1。给定一个输入,我必须能够确定输出中会出现多少次#xyz 我想我必须使用以下语法 Dictionary newFrom: {#xyz -> 1. #abc -> 2. #klm -> 3} 但我无法将这个概念应用到程序中。在闲聊中,如何引用特定的值密钥对 假设我的代码必须执行以下操作 10个苹果+5个苹果=15个苹果 或 10个苹果+5个桔子=10个苹果+5个桔子 然后在一些输入函数中,我必须执

所以我想实现一个字典,在这里我可以把符号,比如#xyz,映射到一些数字值,比如1。给定一个输入,我必须能够确定输出中会出现多少次#xyz

我想我必须使用以下语法

Dictionary newFrom: {#xyz -> 1. #abc -> 2. #klm -> 3} 
但我无法将这个概念应用到程序中。在闲聊中,如何引用特定的值密钥对

假设我的代码必须执行以下操作

10个苹果+5个苹果=15个苹果

10个苹果+5个桔子=10个苹果+5个桔子

然后在一些输入函数中,我必须执行以下操作:

//请原谅伪c语法,我是新手

if (fruit1 == 1 && fruit2 == 1) //here #apples -> 1
    <br>resultFruit == apples.
<br>else
    <br>resultfruit == 0 //where 0 -> no change ie fruits are different.
if(果1==1&&果2==1)//here#apples->1

结果水果==苹果。
否则
resultfruit==0//其中0->无变化,即结果不同。
如何将其转换为聊天代码


感谢您的帮助。如果您能为我指出任何已知项目中的dictionary实现,请这样做,以便我能够看到并理解它应该如何编写。

我不了解dictionary,但关于您的示例,我建议下一个策略:

创建类
Fruits
,它知道其中有多少苹果和其他水果。然后在
Integer
中创建一个DSL方法,比如
apples
oranges
,它将返回一个新的
水果
对象和指定数量的水果。然后在
结果
中创建
+
=
方法,以便您可以组合结果并比较它们


如果我误解了你的问题,请告诉我。

字典的基本用法是:或:put:

假设您将字典分配给一个变量:

myDict:=Dictionary newFrom:{xyz->1.#abc->2.#klm->3}。

然后你就可以写了

myDict地址:#xyz

读取条目
#xyz
(返回1)

或者你也可以通过

myDict at:#foo put:123