W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
F#中的集合是一種數(shù)據(jù)結(jié)構(gòu),用作項目的集合,而不保留插入項目的順序。 集合不允許將重復(fù)條目插入到集合中。
集可以通過以下方式創(chuàng)建
下面是程序演示
(* creating sets *) let set1 = Set.empty.Add(3).Add(5).Add(7). Add(9) printfn"The new set: %A" set1 let weekdays = Set.ofList ["mon"; "tues"; "wed"; "thurs"; "fri"] printfn "The list set: %A" weekdays let set2 = Set.ofSeq [ 1 .. 2.. 10 ] printfn "The sequence set: %A" set2
當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
The new set: set [3; 5; 7; 9] The list set: set ["fri"; "mon"; "thurs"; "tues"; "wed"] The sequence set: set [1; 3; 5; 7; 9]
下表顯示了集的基本操作
值 | 描述 |
---|---|
add : 'T → Set<'T> → Set<'T> | 返回添加到集合中的元素的新集合。 如果集合已包含給定元素,則不會引發(fā)異常。 |
contains : 'T → Set<'T> → bool | 如果給定元素在給定集合中,則計算為true。 |
count : Set<'T> → int | 返回集合中的元素的數(shù)量。 |
difference : Set<'T> → Set<'T> → Set<'T> | 返回一個新的組與第二組從所述第一除去的元素。 |
empty : Set<'T> | 指定類型的空集。 |
exists : ('T → bool) → Set<'T> → bool | 測試集合的任何元素是否滿足給定謂詞。 如果輸入函數(shù)是謂詞并且元素是i0 ... iN,則該函數(shù)計算謂詞i0或...或謂詞iN。 |
filter : ('T → bool) → Set<'T> → Set<'T> | 返回包含只對給定的謂詞返回true的集合中的元素一個新的集合。 |
fold : ('State → 'T → 'State) → 'State → Set<'T> → 'State | 應(yīng)用于給定的累積功能所設(shè)定的所有要素。 |
foldBack : ('T → 'State → 'State) → Set<'T> → 'State → 'State | 應(yīng)用于給定的累積功能所設(shè)定的所有要素。 |
forall : ('T → bool) → Set<'T> → bool | 測試集合的所有元素是否滿足給定謂詞。 如果輸入函數(shù)是p并且元素是i0 ... iN,則該函數(shù)計算p i0 && ... && p iN。 |
intersect : Set<'T> → Set<'T> → Set<'T> | 計算這兩個集合的交集。 |
intersectMany : seq<Set<'T>> → Set<'T> | 計算的集合的序列的交集。該序列必須是非空的。 |
isEmpty : Set<'T> → bool | 返回true如果設(shè)置為空。 |
isProperSubset : Set<'T> → Set<'T> → bool | 如果第一個集合的所有元素都在第二個元素中,并且第二個元素中的至少一個元素不在第一個元素中,則計算為true。 |
isProperSuperset : Set<'T> → Set<'T> → bool | 如果第二個集合的所有元素都在第一個元素中,并且第一個元素的至少一個元素不在第二個元素中,則計算為true。 |
isSubset : Set<'T> → Set<'T> → bool | 如果第一個集合的所有元素都在第二個元素中,則計算為true。 |
isSuperset : Set<'T> → Set<'T> → bool | 如果第二個集合的所有元素都在第一個元素中,則計算為true。 |
iter : ('T → unit) → Set<'T> → unit | 將給定的函數(shù)應(yīng)用于集合的每個元素,按照比較函數(shù)的順序。 |
map : ('T → 'U) → Set<'T> → Set<'U> | 返回包含施加給定函數(shù)對輸入集的每個元素的結(jié)果的新的集合。 |
maxElement : Set<'T> → 'T | 返回被用于該組中按照排序集合中的最高的元素。 |
minElement : Set<'T> → 'T | 返回被用于集在根據(jù)排序的集合中的最低元素。 |
ofArray : 'T array → Set<'T> | 創(chuàng)建一組包含相同元素作為給定的數(shù)組。 |
ofList : 'T list → Set<'T> | 創(chuàng)建一組包含相同元素作為給定的列表。 |
ofSeq : seq<'T> → Set<'T> | 創(chuàng)建從給定的枚舉對象一個新的集合。 |
partition : ('T → bool) → Set<'T> → Set<'T> * Set<'T> | 將集合拆分為兩個集合,其中包含給定謂詞分別返回true和false的元素。 |
remove : 'T → Set<'T> → Set<'T> | 返回一個新集合,其中刪除了給定元素。 如果集合不包含給定元素,則不會引發(fā)異常。 |
singleton : 'T → Set<'T> | 包含給定元素的集合。 |
toArray : Set<'T> → 'T array | 創(chuàng)建包含在順序集合的元素的數(shù)組。 |
toList : Set<'T> → 'T list | 創(chuàng)建包含在順序集合的單元的明細表。 |
toSeq : Set<'T> → seq<'T> | 返回集合的有序觀為枚舉對象。 |
union : Set<'T> → Set<'T> → Set<'T> | 計算兩組的聯(lián)合。 |
unionMany : seq<Set<'T>> → Set<'T> | 計算的一組序列的結(jié)合。 |
下面的例子演示了上述一些功能的使用
let a = Set.ofSeq [ 1 ..2.. 20 ] let b = Set.ofSeq [ 1 ..3 .. 20 ] let c = Set.intersect a b let d = Set.union a b let e = Set.difference a b printfn "Set a: " Set.iter (fun x -> printf "%O " x) a printfn"" printfn "Set b: " Set.iter (fun x -> printf "%O " x) b printfn"" printfn "Set c = set intersect of a and b : " Set.iter (fun x -> printf "%O " x) c printfn"" printfn "Set d = set union of a and b : " Set.iter (fun x -> printf "%O " x) d printfn"" printfn "Set e = set difference of a and b : " Set.iter (fun x -> printf "%O " x) e printfn""
當你編譯和執(zhí)行程序,它產(chǎn)生以下輸出
Set a: 1 3 5 7 9 11 13 15 17 19 Set b: 1 4 7 10 13 16 19 Set c = set intersect of a and b : 1 7 13 19 Set d = set union of a and b : 1 3 4 5 7 9 10 11 13 15 16 17 19 Set e = set difference of a and b : 3 5 9 11 15 17
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: