Ric*_*Eng 4 dictionary smalltalk amber-smalltalk
| dict |
dict := #{'foo'->'brown'. 'bar'->'yellow'.
'qix'->'white'. 'baz'->'red'. 'flub'->'green'} asDictionary.
dict at: 'qix'
Run Code Online (Sandbox Code Playgroud)
如果我PrintIt
,我得到'白色'.如果我删除'asDictionary',我仍然会'白'.字典给了我一些关联集合不是什么?
表达式#{exp1 . sxp2 . exp3}
是特定的amber-smalltalk并创建一个HashedCollection,这是一种特殊的字典,其中键是字符串(可能在Javascript中你经常使用这样的东西).
在其他小方面,没有这样的表达.相反,数组表达式看起来像:( {exp1 . sxp2 . exp3}
没有前导#
)在吱吱声中被引入,也可以在pharo(这是Squeak的一个分支)和Amber中使用.现在,数组表达式创建了一个数组,因此您必须使用整数作为#at:
消息.例如,dict at: 2
将返回一个关联,'bar'->'yellow'
因为它位于您创建的数组的第二个位置.
#asDictionary
是一个集合的方法,它将集合转换为字典,因为集合的元素是关联.因此,如果您想创建一个包含字符串以外的键的字典,您可以这样做:
dict := {
'foo' -> 'brown' .
1 -> 'yellow' .
3 @ 4 -> 'white' .
#(1 2) -> 'red' } asDictionary
Run Code Online (Sandbox Code Playgroud)