集合 (Set
) 是非線性的單一元素的集合,實作數學上的集合論 (set theory)。在 Perl 5,通常是用雜湊模擬集合,Perl 6 則內建集合容器。Bag
和 Set
相似,但會計算該元素出現的次數;Mix
和 Bag
類似,但允許以非整數來計數;除了用來計數外,Bag
和 Mix
和 Set
相當類似。
建立集合
建立串列後呼叫 Set
方法即可將其轉為集合。如下例:
但是 Set
建立後即不可變動,如果之後要變更其元素,需改用 SetHash
,實例如下:
加入及移除元素
加入元素的方法類似於雜湊,將鍵設為 True
即可;移除時則將鍵設為 False
。
檢查元素存在性
使用 (cont)
可檢查某集合是否包含某元素,如下例:
也可以使用 (elem)
檢查某元素是否屬於某集合,如下例:
基本上,兩者是同義的,使用自己習慣的方式即可。
集合運算
Perl 6 集合包含一些常見的集合運算,像是聯集 (union)、交集 (intersection)、差集 (difference) 等。實例如下:
建立 Bag
對串列呼叫 Bag
方法即可建立 Bag,如下例:
如果建立 Bag 後,需更動其內容,改用 BagHash
即可。
取樣本
由於 Bag 有權重,可設置權重後,對其取樣,如下例:
觀察本程式,可發現每次取像的結果都不同,在其中,1 出現的機率最高。
建立 Mix
由於 Mix
的權重是非整數,較常用的方式是直接對其設權重,如下例:
如果建立 Mix
後,需更動其內容,改用 MixHash
即可。基本上,Mix
的用法和 Bag
差不多。