是否有一个字母等效词会接受字母数字作为键?花了一些时间在这里让你们帮助分配UUID值,我现在意识到Dictionaries只采用整数。我曾计划使用UUID作为密钥。
我的设计适用于总帐 - 我的分类帐成员初始化为ledger := Dictionary new
,我希望按照以下方式执行操作:
postTransaction: GLEntry
ledger at: GLEntry UID put: GLEntry
答案 0 :(得分:11)
字典可以使用您喜欢的任何键作为键。在字典中使用字符串键很常见。例如,在Dolphin Smalltalk v6.x中评估以下内容:
d := Dictionary new.
d
at: 'a' put: 'a string';
at: 'b' put: 'b string';
at: 'c' put: 'c string'.
Transcript
show: (d at: 'a'); cr;
show: (d at: 'b'); cr;
show: (d at: 'c'); cr
将导致
a string
b string
c string
显示在Transcript窗口中。
分享并享受。
答案 1 :(得分:3)
@ctote如果您尝试将原始#at
或#at:put:
与除整数之外的任何其他对象一起使用,则会收到该消息。您的问题可能在其他地方,而不是直接与字典。
有趣的是,我们只有一个错误的堆栈跟踪:
Error(Exception)>>signal:
signalerText: 'only integers should be used as indices'
ByteString(Object)>>error:
aString: 'only integers should be used as indices'
ByteString(Object)>>errorNonIntegerIndex
ByteString(Object)>>at:
index: '2'
ByteString>>at:
index: '2'
#2: Character`
正如您所看到的,有人试图使用'2'
来访问字符串中的字符,这是一个字符串,因此不能用于索引字符串集合。