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
/forall
find
/tryFind
,pick
/tryPick
,contains
(containsKey
pourMap
)map
/iter
,filter
,fold
Communes à Array
, List
, Seq
:
append
/concat
,choose
,collect
item
,head
,last
take
,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 ]
...
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 array
plutôt queint[]
N.B. En console FSI, le type affiché est encore
int []
Création par Comprehension
Syntaxe similaire à boucle
for
Même principe que générateurs en C♯, JS
Mot clé
yield
mais 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 :
Dernière mise à jour
Cet article vous a-t-il été utile ?