从格式化的Map初始化序列

时间:2016-04-18 05:55:02

标签: f#

所以我有一个Map<int, Map<int, string>>数据结构,我可以像这样打印出来:

aMap 
|> Map.iter(fun key value -> value 
|> Map.iter(fun k v -> printf "Foo: %d\nBar: %d\nValue: %s" key k v))

这很好用,但我想尝试将带有上述字符串格式的Map元素附加到seq<string>

什么是最有效的方式,同时仍然是&#34;功能&#34;?

1 个答案:

答案 0 :(得分:1)

您始终可以将地图转换为序列: aMap |> Map.toSeq

您也可以使用Map.map进行其他转换(而不是Map.iter)。

通常,查看您正在使用的集合的参考部分会有所帮助: https://msdn.microsoft.com/ja-jp/library/ee353880.aspx

修改

aMap
|> Map.toSeq
|> Seq.collect(fun (k,v) ->
    v
    |> Map.toSeq
    |> Seq.map(fun (x,y) -> sprintf "Foo: %d Bar: %d Value: %s" k x y))
|> Seq.iter(printfn "%A")

第2版:

aMap
|> Seq.collect(fun x ->
    x.Value
    |> Seq.map(fun y -> sprintf "Foo: %d Bar: %d Value: %s\n" x.Key y.Key y.Value))
|> Seq.iter(printfn "%A")

https://dotnetfiddle.net/Il5zv9