Mam klasę w mojej aplikacji - dla uproszczenia przyjmijmy, że jest zdefiniowany następująco:Użyj funkcji z argumentem typu pochodnej (F #)
type baseType() =
member this.A = 5.
też mam dużo funkcji, które przyjmują obiekty tego typu jako argument. Co więcej, niektóre z nich podejmuje szereg tego typu:
let myFun (xArr : baseType[]) =
// ... do something inspirig ;)
Teraz zdałem sobie sprawę, że byłoby miło mieć inną klasę, która wynika z „baseType”. np .:
type inhType() =
inherit baseType()
member this.B = 8.
Jednak nie mogę korzystać z tablic typu odziedziczonego z funkcjami jak „myFun”
let baseArr = [| baseType() |]
let inhArr = [| inhType() |]
myFun baseArr
myFun inhArr // won't work
który będzie „miło mieć”. Czy istnieje prosty sposób na ponowne wykorzystanie moich funkcji bez stosowania tak wielu zmian?
Domyślam się, że jednym z rozwiązań jest mapowanie mojej tablicy za pomocą np. funkcja (fun (d: inhType) -> d:> baseType), ale zastanawiam się, czy można coś jeszcze zrobić.
Sprawdziło się dla mnie - dzięki :). –