1

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

您如何将其转换为闲聊代码...

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

4

2 回答 2

2

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

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

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

然后你可以写

myDict at: #xyz

读取条目#xyz(返回 1)

或者您可以通过以下方式将内容存储在字典中

myDict at: #foo put: 123

于 2013-06-14T05:57:40.833 回答
1

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

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

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

于 2013-06-13T05:42:29.297 回答