F# 从格式化映射初始化序列

F# 从格式化映射初始化序列,f#,F#,所以我有一个Map数据结构,我可以像这样打印出来: aMap |> Map.iter(fun key value -> value |> Map.iter(fun k v -> printf "Foo: %d\nBar: %d\nValue: %s" key k v)) 这很好,但我想尝试将具有上述字符串格式的映射元素附加到seq 在保持“功能性”的同时,最有效的方法是什么?您始终可以将地图转换为序列: aMap>Map.toSeq 您还可以使用Map.Map进行其

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

aMap 
|> Map.iter(fun key value -> value 
|> Map.iter(fun k v -> printf "Foo: %d\nBar: %d\nValue: %s" key k v))
这很好,但我想尝试将具有上述字符串格式的映射元素附加到
seq


在保持“功能性”的同时,最有效的方法是什么?

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

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

通常,浏览您正在使用的集合的参考部分会有所帮助:

编辑:

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")

我怎样才能同时应用字符串格式使用Map.Map,而不是printf使用“Foo”+键构建字符串让我知道这对你是否有效或只是在聊天中ping我。顺便说一句,如果你真的喜欢printf,我想你可以使用sprintf instead,我会再尝试15分钟,然后我会试着看看是否能得到更多的帮助。你能详细说明一下你想做什么吗?@MarkSeemann,获取地图中所有相关值的值,将这些值应用于格式化字符串(如上面的printf),并将其存储在seq中。多亏了s952163的帮助,我想我已经快拿到了