para nombres mapa llave herramientas copia bicicletas f#

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