1
我不知道F#有一个叫“平的”奉承地图是一个列表的功能,如从F#是否具有将地图“平放”到列表中的功能,如scala?
{(1,"hello"),(2, "world")}
到
{1, "hello", 2, "world"}.
Scala有这个功能,的确F#有?
换句话说,F#列表可以包含不同类型的元素吗? 谢谢。
我不知道F#有一个叫“平的”奉承地图是一个列表的功能,如从F#是否具有将地图“平放”到列表中的功能,如scala?
{(1,"hello"),(2, "world")}
到
{1, "hello", 2, "world"}.
Scala有这个功能,的确F#有?
换句话说,F#列表可以包含不同类型的元素吗? 谢谢。
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"]
但我不知道这在实践中有多大帮助。
Seq.collect是我想要的。谢谢。 –
回答最后一个问题:**否**。你不能有没有元组的两种类型的安全列表;这就是他们的目标。最接近你可以得到的是'obj list' – Jwosty
即使Scala不能处理一个混合类型的列表,除非它是一个共享的超类型。 –