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

时间:2013-06-13 00:24:24

标签: smalltalk pharo

所以我想实现一个字典,在那里我可以将#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.

如何将其转换为小谈话代码...

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

2 个答案:

答案 0 :(得分:2)

字典的基本用法是通过以下方式调用:或者:put:

想象一下,您将字典分配给变量:

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

然后你可以写

myDict at: #xyz

阅读条目#xyz(返回1)

或者您可以通过

将内容存储在字典中

myDict at: #foo put: 123

答案 1 :(得分:1)

我不了解字典的想法,但关于你的例子,我建议下一个策略:

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

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