Tôi muốn xác định phương thức được chia sẻ bởi tất cả các thành viên của một công đoàn bị phân biệt đối xử. Hiện tại tôi đã thực hiện nó như thế này, nhưng nó có vẻ thực sự không phù hợp - chắc chắn có một cách tốt hơn. Gợi ý?Phương pháp thành viên công đoàn bị phân biệt
type A =
{AData:string}
member this.SharedMethod (x:float) : int= ...
type B =
{BData:float}
member this.SharedMethod (x:float) : int= ...
type AB =
| A of A
| B of B
let CallSharedMethod (ab:AB) x =
match ab with
| AB.A(a') -> a'.SharedMethod x
| AB.B(b') -> b'.SharedMethod x
Bạn đang thiếu ràng buộc đối tượng, tức là: this.SharedMethod nếu không nó sẽ không hoạt động. Ngoài ra, bạn cần phải thêm thông tin về phương pháp chia sẻ của bạn với thể hiện của DU (trên thực tế là một loại bản ghi), bởi vì nếu nó không có gì bạn có thể sử dụng một chức năng thường xuyên. Tôi chắc chắn không phải là trường hợp của bạn. – Gustavo
Mùi với tôi như phương pháp nên được trên DU. Nhưng nếu không, bạn có thể sử dụng các bản ghi để thực hiện một giao diện. – Daniel
Có, xin lỗi mã của tôi không chính xác cú pháp chính xác. Tôi quan tâm nhiều hơn đến mô hình- làm cách nào để biểu thị sự thật rằng mỗi loại phụ của DU chia sẻ một tên phương thức chung? Tôi sẽ chỉnh sửa mã để làm cho nó chính xác hơn. –