Frage

Ich lerne F #. Ich begann über die F # Proben von Microsoft .

ich auf diese Aussage lautete:

let line1,line2 = 
    use sr = System.IO.File.OpenText @"test.txt"
    let line1 = sr.ReadLine() 
    let line2 = sr.ReadLine() 
    (line1,line2)

Kann jemand diese Aussage mir das erklären?

Welche Art hier definiert wird? Eine Funktion? Ein Tupel?

Warum line1 und line2 innerhalb der Definition von line1,line2 neu definiert werden müssen (let line1 = ... let line2 =)?

Was ist mit der letzten Zeile, (line1, line2) und wie funktioniert diese Bindung in die Art der ursprünglichen Definition? Ist das die Funktion Rückkehr?

Ist "Aussage" auch das richtige Wort für eine Definition in F # benutzen?

Danke.

War es hilfreich?

Lösung

Die allgemeine Form Kennungswert in F # für die Bindung ist

let pattern = expression

In diesem Fall wird die Muster ist „1, LEITUNG 2“, das ist ein Tupel Muster, es wird erwartet zu einem 2-Tupel von Werten zu binden und zuweisen die Namen „line1“ und „line2“ auf diese beiden Werte.

Die Ausdruck ist die nächsten 4 Zeilen. Innerhalb dieses Ausdrucks gibt es lokale Variablen. Sie passieren auch genannt werden „line1“ und „line2“, aber sie leicht umbenannt worden sein könnten „x“ und „y“ oder was auch immer - der Anwendungsbereich dieser Bezeichner ist lokal auf diesen gegliederten Ausdruck. (Die Tatsache, dass die gleichen Namen wie die Namen in dem äußeren Umfang verwendet werden, hat keine Auswirkungen so weit wie der Compiler geht.)

Die letzte Zeile, wenn der Ausdruck der ‚Rückgabewert‘ des Ausdrucks ist. In diesem Fall gibt sie die 2-Tupel des Wert „LINE1“ und „line2“ (oder „x“ und „y“, wenn man sich für die Klarheit der Darstellung umbenennen). Nebenbei bemerkt, da diese beiden Werte jeder Typ „string“ haben, die Art der Rück Ausdruck „string * string“, das ein 2-Tupel, wobei jeder Wert eine Zeichenfolge ist. Das bedeutet, die ursprünglichen „line1“ und „line2“ Namen in der ersten Zeile wird jeweils abgeleitet wird Typ „string“ haben.

F # ist funktional, und so in gewissem Sinne „alles ist ein Ausdruck“ und „es gibt keine Aussagen“ (nur Sequenzen von Ausdrücken, die die Reihe nach ausgewertet werden), aber es ist in Ordnung, IMO (ab) verwendet den Begriff „Erklärung "beschreibt die inneren‚lassen‘Linien, es sei denn, Sie versuchen, sehr genau zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top