f# - nombres - copia de llave mapa
Juego de llaves de un mapa (2)
Convierta su map en secuencia de tuplas (key,value)
primero y luego mapéelo en una secuencia de solo teclas:
map |> Map.toSeq |> Seq.map fst
Muestra FSI:
>Map.ofList[(1,"a");(2,"b")] |> Map.toSeq |> Seq.map fst;;
val it : seq<int> = seq [1; 2]
O alternativamente, como el orden de las claves probablemente no importa, puede usar un método más ansioso para devolver la list
de todas las claves. Tampoco es difícil convertirlo en las keys
de métodos de extensión del módulo Microsoft.FSharp.Collections.Map
:
module Map =
let keys (m: Map<''Key, ''T>) =
Map.fold (fun keys key _ -> key::keys) [] m
Tengo un mapa X y estoy tratando de obtener un conjunto de teclas que cumplan con cierta condición, algo como esto:
Map.Keys X
|> Set.filter (fun x -> ...)
... pero no puedo encontrar la manera de obtener las claves de la colección de mapas de F #.
Para un juego de llaves que podrías hacer:
let keys<''k, ''v when ''k : comparison> (map : Map<''k, ''v>) =
Map.fold (fun s k _ -> Set.add k s) Set.empty map