Die Antwort von @Foole vorgesehen ist gut, aber aus dem Kommentar, den ich Sie haben den Eindruck, dass Sie die temporäre Variable first
nicht gerne deklarieren möchten. Dies kann sich in der Tat schwerfällig anfühlen, wenn Sie nur den ersten Wert herausziehen und dann zu einer anderen Funktion leiten möchten.
Es gibt keinen Einbau-Anlage, die ich bin mir dessen bewusst, dass können Sie diese automatisch. Bedenken Sie, dass der oben angegebene Typ Corner
ein degenerierter Fall einer diskriminierten Union (DU) ist. Normalerweise haben DUs mehr Fälle, und sie sind oft in ihrer Form heterogen.
Es kann gute Gründe geben, einen Single-Case-DU wie Corner
zu haben, aber dann macht es oft Sinn, auch verschiedene "Helfer" -Funktionen zu verwenden, um das Arbeiten mit diesem Typ zu erleichtern.
Im Falle des Corner
Typ, können Sie Funktionen definieren, wie:
let cornerX (Corner(x, _)) = x
let cornerY (Corner(_, y)) = y
Hier, ich habe angenommen, dass Corner
Modelle eine Koordinate, aber wenn Sie möchten, können Sie auch den Namen Funktionen und snd
. Sie können sie auch in ein eigenes Modul einfügen, wenn Sie das lieber bevorzugen.
Dies ermöglicht es Ihnen, ohne den Aufwand einer temporären Variablen einen Wert aus einem Corner
Wert zu extrahieren und Rohr:
> corner |> cornerX |> ((*) 10) |> string;;
val it : string = "10"
wo corner
wie im OP definiert ist.
danke, ich meinte Typ für den Typ, ja :) Allerdings bedeutet diese Zuweisung, dass ich eine temporäre Variable benötigen, um das Mitglied des Tupels zu verwenden (zuerst erstellen, dann verweisen) –