HashSet`.ToArray()`使用F#
我需要做什么才能调用HashSet的HashSet`.ToArray()`使用F#,f#,ienumerable,hashset,F#,Ienumerable,Hashset,我需要做什么才能调用HashSet的.ToArray()?我尝试了以下方法,但无效: let a = System.Collections.Generic.HashSet () a.Add 5 |> ignore a.ToArray () // Not possible let b = a :> System.Collections.IEnumerable b.ToArray () // Not possible ,声明如下: ToArray:从IEnumerable创建数组。(由
.ToArray()
?我尝试了以下方法,但无效:
let a = System.Collections.Generic.HashSet ()
a.Add 5 |> ignore
a.ToArray () // Not possible
let b = a :> System.Collections.IEnumerable
b.ToArray () // Not possible
,声明如下:
ToArray:从IEnumerable创建数组。(由可枚举项定义。)
所以应该有一种方法。我相信这是一种扩展方法,所以你需要打开包含可枚举(Linq?)的名称空间来获取它,就像在C#中一样。我相信这是一种扩展方法,所以你需要打开包含可枚举(Linq?)的名称空间来获取它,正如在C#中一样,
HashSet
类型在F#中实现了标准的泛型IEnumerable
),因此您可以使用Seq.toArray
(无需打开任何名称空间):
使用C#extension method
ToArray
也可以(如果您打开System.Linq
),但我认为使用标准的F#函数更惯用。HashSet类型在F#中实现标准的genericIEnumerable
),因此您可以使用Seq.ToArray
(无需打开任何名称空间):
使用C#extension methodToArray
也可以(如果打开System.Linq
),但我认为使用标准的F#函数更为惯用。IEnumerable.ToArray()被定义为System.Linq下的扩展方法。
或者,使用Seq.toArray或Array.ofSeq
open System.Collections.Generic
open System.Linq
let hs = HashSet()
hs.Add 4
hs.Add 2
let arr = hs.ToArray() // needs System.Linq
let arr2 = hs |> Seq.toArray // provided by F#
IEnumerable.ToArray()定义为System.Linq下的扩展方法。
或者,使用Seq.toArray或Array.ofSeq
open System.Collections.Generic
open System.Linq
let hs = HashSet()
hs.Add 4
hs.Add 2
let arr = hs.ToArray() // needs System.Linq
let arr2 = hs |> Seq.toArray // provided by F#