是否有一个等效的字典可以接受字母数字作为键?在这里花了一些时间让你们帮助分配 UUID 值之后,我现在意识到字典只接受整数。我曾计划使用 UUID 作为密钥。
我的设计是针对总账的——我的账本成员被初始化为ledger := Dictionary new
,我曾希望按照以下方式做一些事情:
postTransaction: GLEntry
ledger at: GLEntry UID put: GLEntry
是否有一个等效的字典可以接受字母数字作为键?在这里花了一些时间让你们帮助分配 UUID 值之后,我现在意识到字典只接受整数。我曾计划使用 UUID 作为密钥。
我的设计是针对总账的——我的账本成员被初始化为ledger := Dictionary new
,我曾希望按照以下方式做一些事情:
postTransaction: GLEntry
ledger at: GLEntry UID put: GLEntry
字典可以使用任何你喜欢的东西作为键。在字典中使用字符串作为键是很常见的。例如,在 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
显示在成绩单窗口中。
分享和享受。
@ctote 如果您尝试使用 raw#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'
是一个字符串,因此不能用于索引字符串集合。