Vue d'ensemble
Types et Modules
Collections en F♯ avec leur module associé :
't array
't[]
Array<'t>
Array
≡ Array<T>
Ordre ajout
't list
List<'t>
List
≃ Immutable-List<T>
Ordre ajout
ResizeArray
(alias)
❌
≡ List<T> ❕
Ordre ajout
't seq
seq<'t>
Seq
≡ IEnumerable<T>
Ordre ajout
't set
Set<'t>
Set
≃ Immutable-HashSet<T>
Valeur
Map<'K, 'V>
Map
≃ Immutable-Dictionary<K, V>
Clé
dict (cons)
❌
≡ IDictionary<K, V>
Clé
readOnlyDict (cons)
❌
≡ IReadOnly-Dictionary<K, V>
Clé
Homogénéité des fonctions 👍
Communes aux 5 modules :
empty/isEmpty,exists/forallfind/tryFind,pick/tryPick,contains(containsKeypourMap)map/iter,filter,fold
Communes à Array, List, Seq :
append/concat,choose,collectitem,head,lasttake,skip... une centaine de fonctions en tout !
Homogénéité de la syntaxe 👍
Type
Éléments
Range
Comprehension
Array
[∣ 1; 2 ∣]
[∣ 1..5 ∣]
...
List
[ 1; 2 ]
[ 1..5 ]
...
Seq
seq { 1; 2 }
seq { 1..5 }
...
Set
set [ 1; 2 ]
set [ 1..5 ]
...
Piège de la syntaxe ⚠️
Les crochets [] sont utilisés pour :
Valeur : instance d'une liste
[ 1; 2 ](de typeint list)Type : tableau
int [], par ex. de[| 1; 2 |]
☝ Recommendations
Bien distinguer type vs valeur ❗
Préférer écrire
int arrayplutôt queint[]N.B. En console FSI, le type affiché est encore
int []
Création par Comprehension
Syntaxe similaire à boucle
forMême principe que générateurs en C♯, JS
Mot clé
yieldmais souvent optionnel (F♯ 4.7 / .NET Core 3)Mot clé
yield!≡yield*JSFonctionne pour toutes les collections 👍
Exemples :
yield! permet d'aplatir des collections imbriquées :
Last updated
Was this helpful?