簡體   English   中英

我們如何在pharo中檢查元素是否已存在於集合中

[英]How do we check in pharo if an element already exist in a set

假設我有一個函數,每次刷新后都會向集合中連續添加一個隨機數。

 Myfunction |list length data | z := Set new. x := 8. data:= received data after each refresh. length := data size. 1 to: length do:[:k | list := data at: k. list < x "How to check if this data already exist and not add" ifTrue:[z add: list] 

如何檢查Pharo中是否存在一個號碼,如果已經存在,則不應再次添加它?

集合和其他基本集合是常見Smalltalk的一部分。 您應該查看Smalltalk文檔( 例如 Smalltalk藍皮書 ),尤其是要使用的每種數據類型以及其他相關數據的引用。

如果您閱讀Set的文檔,則會發現一條消息#includes:如果該參數位於集合中,則返回true,否則返回false。 看起來像:

(z includes: list) ifTrue: [ z add: list ]

但是,根據定義, Set包含唯一元素。 因此,如果您嘗試添加集合中已經存在的元素,則Smalltalk將不會再次添加它,並且如果嘗試添加它也不會給您帶來錯誤。 因此,您無需檢查該集合是否已包含list 您可以添加它。

然后,您要進行漫長而艱難的數據遍歷。 您無需獲取長度,然后在從1到該長度的索引上循環。 我認為您的數據是某種Smalltalk Collection ,因此您可以只使用#do:消息。 #do:消息使您可以在集合的每個元素上迭代一個塊:

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

這將替換您從length := ...顯示的所有內容length := ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM