Ich bin ein neuer Programmierer im Allgemeinen und auch zu F #. Ich bin auf dieses spezielle Problem mehrmals gestoßen und muss es meiner Meinung nach noch effizient lösen. Hier ist das Problem:Überprüfen Sie mehrere Optionstypen und konvertieren Sie dann zu Typ
Ich habe diese Beispiel-Typen:
type Retail1 = | Fashion | Auto | Sports
type Wholesale1 = | Fashion | Auto | Sports
type Events1 = | Wedding | Birthday
type Product =
| Retail of Retail1 | Wholesale of Wholesale1 | Events of Events1
| NoProduct
Ich mag die Möglichkeit, die ersten drei Typen auf den Produkttyp über eine Funktion konvertieren:
let convertToProduct (retail: Retail1 option)
(wholesale: Wholesale1 option) (events: Events1 option) =
// convert to Product here
if retail.IsSome then Retail retail
elif wholesale.IsSome then Wholsale wholseale
elif events.IsSome then Events events
else NoProduct
Die Art und Weise dass ich es im Pass gehandhabt habe, ist nur eine lange if elif-Anweisung zu verketten, um nach jeder Bedingung zu suchen und die endgültige Art des Produkts zurückzugeben, aber das fühlt sich nicht korrekt an oder zumindest idiomatisch zu F #. Was wäre der empfohlene Ansatz für dieses Problem?
Wäre es möglich, eine Eingabe wie folgt zu haben: 'convertToProduct (Some (Retail1.Fashion)) None (Some (Wedding))'? Wenn ja, dann müssen Sie Ihre Typen überdenken. –
Von Interesse: [Argumentation über funktionale Typen] (http://tomasp.net/blog/types-and-math.aspx/) –