如何仅在 GNU Smalltalk 上获取密钥?
How to just get key only on GNU Smalltalk?
我目前正在使用存储字符字典(键)和该字符(值)出现次数的 sortedCollection。遍历 sortedCollection 时,如何只访问键值?
例如
[que last notNil] whileTrue: [
stdout << 'current character is ' *key* << ' and occurs << *val* << ' times.' << nl.
]
其中 que
是按值对字典进行排序的 sortedCollection。
我的目标如下:假设 que
有:
[$a:20, $e:100]
其中第一个字母是字典的键,第二个数字是字典的值。我的输出应该是这样的:
current character is a and occurs 20 times.
current character is e and occurs 100 times.
我不确定如何获取 a
或字典中的键,因为键是任意的。
假设 que
是一个排序的集合,每个元素都是一个关联,以字符为键,以计数为值,就像在您的 [$a:20, $e:100]
示例中一样,您可以这样做这个:
que do: [:each | stdout << 'current character is ' << each key
<< ' and occurs ' << each value << ' times.' << nl]
如果 que 是字典,请使用 que keysAndValuesDo: [:char :count | stdout << "..." char << "..." count << "..." nl]
。
根据您的整体应用程序,您还可以使用 Bag,它是可以出现多次的无序元素集合(与 Set 不同,Set 中每个元素只包含一次)。
characters := 'hello world' asBag.
characters asSet do: [:each |
stdout << 'current character is ' << each
<< ' and occurs ' << (characters occurrencesOf: each)
<< ' times.' << nl]
您也可以看看#sortedByCount 方法,看看它是否适合您的情况。我无法从参考中看出它返回的集合究竟是如何构造的,所以我不会为您提供猜测的示例代码。
我目前正在使用存储字符字典(键)和该字符(值)出现次数的 sortedCollection。遍历 sortedCollection 时,如何只访问键值?
例如
[que last notNil] whileTrue: [
stdout << 'current character is ' *key* << ' and occurs << *val* << ' times.' << nl.
]
其中 que
是按值对字典进行排序的 sortedCollection。
我的目标如下:假设 que
有:
[$a:20, $e:100]
其中第一个字母是字典的键,第二个数字是字典的值。我的输出应该是这样的:
current character is a and occurs 20 times.
current character is e and occurs 100 times.
我不确定如何获取 a
或字典中的键,因为键是任意的。
假设 que
是一个排序的集合,每个元素都是一个关联,以字符为键,以计数为值,就像在您的 [$a:20, $e:100]
示例中一样,您可以这样做这个:
que do: [:each | stdout << 'current character is ' << each key
<< ' and occurs ' << each value << ' times.' << nl]
如果 que 是字典,请使用 que keysAndValuesDo: [:char :count | stdout << "..." char << "..." count << "..." nl]
。
根据您的整体应用程序,您还可以使用 Bag,它是可以出现多次的无序元素集合(与 Set 不同,Set 中每个元素只包含一次)。
characters := 'hello world' asBag.
characters asSet do: [:each |
stdout << 'current character is ' << each
<< ' and occurs ' << (characters occurrencesOf: each)
<< ' times.' << nl]
您也可以看看#sortedByCount 方法,看看它是否适合您的情况。我无法从参考中看出它返回的集合究竟是如何构造的,所以我不会为您提供猜测的示例代码。