Types flexibles
Besoin
open System.Collections.Generic
// V1
let add item (collection: ICollection<_>) =
collection.Add item
collection
let a = List([1..3]) // List<int>
let b = a |> add 4 // ICollection<int> != List<int> ❗(* V1 ❌ *) let add item (collection: ICollection<_>) = …
(* V2a 😖 *) let add<'t, 'u when 'u :> ICollection<'t>> (item: 't) (collection: 'u) : 'u = …
(* V2b 😕 *) let add (item: 't) (collection: 'u when 'u :> ICollection<'t>) : 'u = …
(* V3 ✅ *) let add item (collection: #ICollection<_>) = …Autres usages
Résumé
Mis à jour