我想知道F#是否有一个名为" flat"将地图奉为列表,例如
{(1,"hello"),(2, "world")}
到
{1, "hello", 2, "world"}.
Scala有这个功能,F#有吗?
换句话说,F#列表是否包含不同类型的元素? 感谢。
答案 0 :(得分:4)
F#没有“具有不同类型元素的列表”类型,但您可以执行以下操作。
首先,您可以在地图和配对列表之间进行转换:
> let xs = [(1, "foo"); (2, "bar")] ;;
val xs : (int * string) list = [(1, "foo"); (2, "bar")]
> let m = Map.ofSeq xs;;
val m : Map<int,string> = map [(1, "foo"); (2, "bar")]
> let ys = m |> Map.toSeq |> List.ofSeq;;
val ys : (int * string) list = [(1, "foo"); (2, "bar")]
然后,您可以将每对中的组件转换为对象,然后将其展平为对象列表:
>
- let zs =
- ys
- |> Seq.collect (fun (key, value) -> [(key :> obj); (value :> obj)])
- |> List.ofSeq;;
val zs : obj list = [1; "foo"; 2; "bar"]
但是,我不知道这在实践中有多大帮助。