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



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

如何将其转换为闲聊代码…

任何帮助都是感激的。如果你能指出我在任何已知的项目字典的实现,请这样做,这样我就可以看到和理解它应该如何写。

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

想象你把字典赋值给一个变量:

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

那么你可以写

myDict at: #xyz

读取条目#xyz(返回1)

或者您可以通过

将内容存储在字典中

myDict at: #foo put: 123

我不明白字典的意思,但是关于你的例子,我建议下一个策略:

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

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

最新更新