Perl 6 程式設計教學:Set、Bag、Mix

PUBLISHED ON NOV 9, 2017 — PROGRAMMING

    集合 (Set) 是非線性的單一元素的集合,實作數學上的集合論 (set theory)。在 Perl 5,通常是用雜湊模擬集合,Perl 6 則內建集合容器。BagSet 相似,但會計算該元素出現的次數;MixBag 類似,但允許以非整數來計數;除了用來計數外,BagMixSet 相當類似。

    建立集合

    建立串列後呼叫 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 差不多。

    comments powered by Disqus