Zuerst entschuldigen Sie sich für den schlechten Titel - ich verstehe nicht genug F #, um das Problem besser zu beschreiben.Vergleichen von F # diskriminierten Gewerkschaftsinstanzen über Mustervergleich
Betrachten Sie diese einfach DU:
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"
ich repräsentieren Geld in verschiedenen Währungen und eine Überlastung des Operators (+), so dass ich sicher Geld + Geld machen kann. Wenn ich jedoch viele Währungen habe, wird es mühsam, die Spielanweisung zu schreiben. Gibt es eine Möglichkeit, etwas auszudrücken wie:
match first, second with
| _(x), _(y) -> _(x + y)
Oder gibt es einen anderen Weg, um das gleiche Ergebnis zu erzielen? Ich habe aufgrund der beschriebenen Einschränkungen here Mengeneinheiten berücksichtigt und verworfen.
Sollten Sie nicht für diese in F # unter Verwendung von Maßeinheiten sein? –
Ich würde gerne Maßeinheiten verwenden, aber weil das Maß zur Laufzeit gelöscht wird, bietet es mir keine Sicherheit beim Lesen von Daten aus externen Quellen (siehe verknüpfte Frage). Ich würde gerne falsch bewiesen werden! – Akash