Records anonymes
Introduction
Depuis F♯ 4.6 (mars 2019)
Syntaxe : idem Record avec accolades "larges"
{| fields |}{| Age: int |}→ signature{| Age = 15 |}→ instance
Typage inline : pas besoin de pré-définir un
typenomméAlternative aux Tuples
Autorisé en entrée/sortie de fonction
≠ Type anonyme C♯
Bénéfices ✅
Réduire boilerplate • Améliorer interop avec systèmes externes (JavaScript, SQL...)
Exemples :
Projection LINQ
Personnalisation d'un record existant
Sérialisation JSON
Signature inline
Alias par module
✅ Projection LINQ
💡 Sélectionner un sous-ensemble de propriétés
En C♯, on utiliserait un type anonyme :
🔗 https://queil.net/2019/10/fsharp-vs-csharp-anonymous-records/
✅ Personnalisation d'un record existant
💡 Un record anonyme peut être instancié à partir d'une instance de record
✅ Sérialisation JSON
😕 Unions sérialisées dans un format pas pratique
💡 Définir un record anonyme pour sérialiser un customer
✅ Signature inline
💡 Utiliser un record anonyme inline pour réduire charge cognitive
✅ Alias par module
💡 Instant t : même type dans 2 modules
💡 Plus tard : facilite personnalisation des types par module
Limites 🛑
Mis à jour
Ce contenu vous a-t-il été utile ?