Dicts
**Both List and Dict are collections. However, contrary to a list, a dict has no order. Another distinction between the two is that a dict consists of object pairs. One object acts as entry (or keyword) in order to search for the other object. A good example of a list is a price list, such as:
>> menu := Dict new
put: ['£5'] at: ['apple pie'],
put: ['£6'] at: ['carrot cake'],
put: ['£3'] at: ['fudge'].
Similar to a list, the message put:at: is used to add an object to a list. The difference is that, contrary to a list, two objects are being linked. The first object is, similar to a list, the object that you will store in a list. The second object is not its position within the collection, but the entry which enables the previous object to be retrieved at a later time. In short, a dict works a bit like a dictionary; so, by using the keyword the meaning can be found. For instance, to retrieve from the above-mentioned list the price of a fudge:
>> price := menu at: ['fudge'].
You may also use the concise notation:
>> price := menu ? ['fudge'].
Should the entries that you apply to store objects be without spaces (and not collide with other predefined messages), the next notation can be also be used:
>> menu := Dict new
pie: ['£5'],
cake: ['£6'],
fudge: ['£3'].
No doubt that the above notation reads a bit more natural. To request the price of a fudge, the following simplified notation can be used:
>> price := menu fudge.
[ Dict ] type
Example:
>> x := Dict new.
Out write: x type, stop.
Result:
[ Dict ] put: [ Object ] at: [ Object ]
Example:
>> x := Dict new.
x put: ['aaa'] at: ['bbb'].
Out write: x, stop.
Result:
[ Dict ] [ String ]: [ Object ]
Example:
>> x :=
Dict new
aaa: 11.90,
bbb: 12.99,
ccc: 13.00.
Out write: ( x ? ['aaa'] ), stop.
Out write: ( x ccc ), stop.
Result:
[ Dict ] - [ Object ]
Example:
>> x := Dict new.
x aaa: ['bbb'], ccc: ['ddd'].
x - ['ccc'].
Out write: x, stop.
Result:
[ Dict ] entries
Example:
>> x := Dict new.
x aaa: ['bbb'], ccc: ['ddd'].
Out write: x entries, stop.
Result:
[ Dict ] values
Example:
>> x := Dict new.
x aaa: ['bbb'], ccc: ['ddd'].
Out write: x values, stop.
Result:
[ Dict ] at: [ Object ]
Example:
>> x := Dict new.
x put: ['a'] at: ['b'].
x put: ['xxx'] at: ['yyy'].
Out write: (x at: ['b']), stop.
Out write: (x yyy), stop.
Out write: (x ? ['b']), stop.
Result:
[ Dict ] count
Example:
>> x := Dict new.
x
put: ['a'] at: ['b'],
put: ['c'] at: ['d'].
Out write: x count, stop.
Result:
[ Dict ] each: [ Block ]
Example:
(Dict new I: 1, II: 2, III: 3) each: { :a :b
Out write: a + b, stop.
}.
Result:
[ Dict ] has: [ Object ]
Example:
>> x := Dict new.
x China: ['CN'], Russia: ['RU'].
Out write: (x has: ['CN']), stop.
Out write: (x has: ['NL']), stop.
Result:
[ Dict ] string
Example:
>> x := Dict new.
x put: ['a'] at: ['b'].
>> y := x string.
Out write: y, stop.
Result: