Tôi đã có một lớp trong ứng dụng của tôi - vì đơn giản chúng ta hãy giả định nó được định nghĩa như thế này:Sử dụng một hàm với một cuộc tranh cãi của một loại có nguồn gốc (F #)
type baseType() =
member this.A = 5.
Ngoài ra, tôi đã có rất nhiều các hàm lấy đối tượng thuộc loại này làm đối số. Hơn nữa, một số người trong số họ lấy một mảng thuộc loại này:
let myFun (xArr : baseType[]) =
// ... do something inspirig ;)
Bây giờ tôi nhận ra rằng sẽ tốt hơn nếu có một lớp khác xuất phát từ "baseType". ví dụ .:
type inhType() =
inherit baseType()
member this.B = 8.
Tuy nhiên, tôi không thể sử dụng các mảng của kiểu di truyền với các chức năng như "myFun"
let baseArr = [| baseType() |]
let inhArr = [| inhType() |]
myFun baseArr
myFun inhArr // won't work
đó sẽ là "tốt đẹp để có". Có cách nào đơn giản để tái sử dụng các chức năng của tôi mà không áp dụng quá nhiều thay đổi?
Tôi đoán một trong những giải pháp là ánh xạ mảng của tôi bằng cách sử dụng ví dụ: các chức năng (vui vẻ (d: inhType) -> d:> baseType), nhưng tôi tự hỏi nếu có bất cứ điều gì khác có thể được thực hiện.
Làm việc tốt cho tôi - cảm ơn :). –