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的帮助,我想我已经快拿到了