Smalltalk 如果集合中已经存在一个元素,我们如何签入pharo

Smalltalk 如果集合中已经存在一个元素,我们如何签入pharo,smalltalk,pharo,pharo-5,Smalltalk,Pharo,Pharo 5,假设我有一个函数,在每次刷新后不断向集合添加一个随机数 Myfunction |列表长度数据| z:=设置为新。 x:=8。 数据:=每次刷新后收到的数据。 长度:=数据大小。 1到:长度do:[:k |列表:=位于:k的数据。 列表

假设我有一个函数,在每次刷新后不断向集合添加一个随机数

Myfunction
|列表长度数据|
z:=设置为新。
x:=8。
数据:=每次刷新后收到的数据。
长度:=数据大小。
1到:长度do:[:k |列表:=位于:k的数据。
列表ifTrue:[z add:list]
集合和其他基本集合是通用Smalltalk的一部分。您应该查看Smalltalk文档(例如),特别是您尝试使用的每种数据类型以及其他相关数据类型的引用

如果阅读
Set
的文档,您会发现一条消息
#包括:
,如果参数在集合中,则返回true;如果参数不在集合中,则返回false。这看起来像:

(z includes: list) ifTrue: [ z add: list ]
但是,根据定义,
集合
包含唯一的元素。因此,如果您尝试添加集合中已存在的元素,Smalltalk将不会再次添加该元素,如果您尝试添加,Smalltalk也不会给您错误信息。因此,您无需检查集合是否已包含
列表
。您只需添加即可

然后,您将以漫长而艰难的方式进行数据遍历。您不需要获取长度,然后在索引上循环从1到该长度。我假设您的数据是某种Smalltalk集合,因此您可以只使用
#do:
消息。
#do:
消息允许您在集合的每个元素上迭代一个块:

data do: [ :each | each < x ifTrue: [ z add: each ] ]
data do:[:each | each

这将替换从
长度开始显示的所有内容:=…
集合和其他基本集合是通用Smalltalk的一部分。您应该查看Smalltalk文档(例如),特别是您尝试使用的每种数据类型以及其他相关数据类型的引用

如果阅读
Set
的文档,您会发现一条消息
#包括:
,如果参数在集合中,则返回true;如果参数不在集合中,则返回false。这看起来像:

(z includes: list) ifTrue: [ z add: list ]
但是,根据定义,
集合
包含唯一的元素。因此,如果您尝试添加集合中已存在的元素,Smalltalk将不会再次添加该元素,如果您尝试添加,Smalltalk也不会给您错误信息。因此,您无需检查集合是否已包含
列表
。您只需添加即可

然后,您将以漫长而艰难的方式进行数据遍历。您不需要获取长度,然后在索引上循环从1到该长度。我假设您的数据是某种Smalltalk集合,因此您可以只使用
#do:
消息。
#do:
消息允许您在集合的每个元素上迭代一个块:

data do: [ :each | each < x ifTrue: [ z add: each ] ]
data do:[:each | each

这将替换从
长度开始显示的所有内容:=…

,与文档相比,这显然是最好的解释。谢谢@lurker@ludo我很高兴它有帮助。关于文档的一点是,它将为您列出各种类的所有可用消息。因此,这始终是一个很好的启动要点。我同意文档可以简明扼要地解释。如果您觉得我上面的答案可以接受,如果您能通过单击旁边的复选标记接受我的答案,我将不胜感激。@Lower您能给我们指一个指向Pharo标准库文档的链接吗?谢谢。@GregBuchholz我没有提到它“Pharo标准库”文档。我提到了“Smalltalk文档”"。例如,如果您查看,集合和其他集合在此处进行了描述,
包括:
是集合的标准消息之一。Pharo、GNU smalltalk、VA smalltalk与原始标准有各自的偏差,但对于普通集合,它们都非常遵循。这显然是最好的解释请参阅文档。谢谢@lurker@ludo我很高兴它有帮助。关于文档的一点是,它将为您列出各种类的所有可用消息。因此,这始终是一个很好的启动点。我同意文档可以简洁地解释。如果您认为我的上述答案可以接受,如果您可以如果您能通过单击旁边的复选标记来接受,我将不胜感激。@Lougler您能给我们指一个指向Pharo标准库文档的链接吗?谢谢。@GregBuchholz我没有提到“Pharo标准库”文档。我提到了“Smalltalk文档”。例如,如果您查看,集合和其他集合将在此处进行描述,
包括:
是集合的标准消息之一。Pharo、GNU smalltalk、VA smalltalk与原始标准有各自的偏差,但对于普通集合,请严格遵循。