Thứ nhất, xin lỗi cho tiêu đề nghèo - Tôi không hiểu đủ F # để mô tả vấn đề tốt hơn.So sánh F # trường hợp công đoàn phân biệt đối xử thông qua kết hợp mẫu
Cân nhắc DU đơn giản này:
type Money =
| USD of decimal
| GBP of decimal
| EUR of decimal
static member (+) (first: Money, second: Money) =
match first, second with
| USD(x), USD(y) -> USD(x + y)
| GBP(x), GBP(y) -> GBP(x + y)
| EUR(x), EUR(y) -> EUR(x + y)
| _ -> failwith "Different currencies"
Tôi đại diện cho tiền bằng ngoại tệ khác nhau, và quá tải (+) điều hành vì vậy mà tôi có thể yên tâm làm tiền + tiền. Tuy nhiên, nếu tôi có nhiều loại tiền tệ thì câu lệnh trận đấu sẽ trở nên tẻ nhạt để viết. Có cách nào để thể hiện điều gì đó như:
match first, second with
| _(x), _(y) -> _(x + y)
Hoặc có cách nào khác để đạt được kết quả tương tự không? Tôi đã xem xét và loại bỏ các đơn vị đo lường do các giới hạn được mô tả here.
Bạn không nên sử dụng đơn vị đo lường cho điều này trong F #? –
Tôi rất muốn sử dụng đơn vị đo lường, nhưng vì biện pháp bị xóa khi chạy nó không cung cấp cho tôi bất kỳ sự an toàn nào khi đọc dữ liệu từ các nguồn bên ngoài (xem câu hỏi được liên kết). Tôi rất muốn được chứng minh là sai! – Akash