10
votes

F # - Comment remplir un système.Collections.Generic.List de tableau

J'ai le code suivant qui remplit un système.Collections.generic.List Je n'aime pas cela, je ne me demandais donc pas s'il y a une meilleure façon de le faire. XXX

f#

0 commentaires

4 Réponses :


18
votes

Avez-vous essayé: xxx

liste <'T> a un constructeur qui prend un ienumerable <' t> prend heureusement tout SEQ <'T> vous y passe.


0 commentaires

6
votes

En plus de la réponse de Mehrdad

Je trouve utile de définir des modules d'assistant pour de nombreuses collections standard et des types .NET pour les rendre plus amicaux. Ici, je définirais ici le suivant P>

let getDirectories = 
        Directory.GetDirectories(_baseFolder)
let languagesList = 
      getDirectiories
      |> Seq.map (fun dir -> (new DirectoryInfo(dir)).Name)
      |> BclListUtil.ofSeq


2 commentaires

Notez également que vous pouvez utiliser l'abréviation de type resizarray <_> au lieu de system.collections.generic.list <_> .


@KVB, merci, je n'ai pas réalisé qu'il y avait déjà un alias de type présent.



2
votes

L'alias f # pour system.collections.generic.list <_> est resizarray <_> comme KVB noté. Le F # PowerPack comprend un Module resizarray pour travailler avec des listes de BCL dans une mode idiomatique F # similaire à la SEQ et aux modules de liste.

Toutefois, pour une raison d'étrange raison, ce module semble inclure Ofarray et delist et toseq mais pas ofq .


0 commentaires

1
votes

Utilisez resizarray qui équivaut à system.collections.generic.list

exemple: xxx


0 commentaires