Verwenden von Variablen zum Speichern von Werten

Abgeschlossen

Alle Programme bestehen in der Regel aus vielen Schritten, in denen das Programm auf Daten arbeitet. Im Rahmen der Ausführung all dieser Schritte ist es üblich, das intermittierende Ergebnis, die Daten, in einem benannten Verweis zu speichern. Anschließend können Sie die Daten später lesen oder bearbeiten. Benannte Verweise werden häufig als Variablen bezeichnet.

Variablen, Binden eines Werts

Variablen sind benannte Verweise, die an einen Wert gebunden sind, auf den Sie im Code verweisen möchten. In F# wird als Bindung eines Werts betrachtet. Was Sie also tun, ist das Zuweisen oder Binden eines Werts zu einem benannten Verweis, einer Variablen. Um einen Wert zu binden, verwenden Sie das let Schlüsselwort, einen Namen für Ihren Verweis und weisen ihm einen Wert zu, wie im folgenden Code:

let name = "Chris"

name ist der benannte Bezug und "Chris" sein gebundener Wert.

Nachdem einer Variablen ein Wert zugewiesen wurde, kann er nicht geändert werden, er ist unveränderlich. Der folgende Code würde nicht kompilieren und erzeugt einen Fehler, der etwa "error FS0027: Dieser Wert ist nicht änderbar" lautet.

let name = "Chris"
name <- "Luis" // not allowed

Änderbares Änderbares

Sie können Variablen ändern, aber Sie müssen signalisieren, dass Sie sie änderbar machen möchten. Mithilfe des Schlüsselworts mutable in der Variablendefinition können Sie einen Wert ohne Kompilierungsfehler ändern, z. B. im folgenden Code:

let mutable name = "Chris"
name <- "Luis" // this statement is now allowed

Variablentypen

In F# gibt es einen Bereich unterschiedlicher Typen. Viele der Typen müssen mit dem Speichern von Zahlen unterschiedlicher Größen und mit oder ohne Dezimalstellen zu tun haben. Andere Typen sind textzeichenfolgen- oder booleschen Variablen zugeordnet. Im Folgenden finden Sie eine Liste der Typen, die beim Erlernen von F# wahrscheinlich auftreten.

Typ BESCHREIBUNG
Boolesch Mögliche Werte sind true oder false
INT Werte von -2.147.483.648 bis 2.147.483.647.
Schnur Unicode-Text
float, double Ein 64-Bit-Gleitkommatyp.

Der Typ wird abgeleitet.

Wenn Sie eine Variable deklarieren, können Sie dies mit oder ohne Typ tun. Wenn Sie beim Deklarieren einer Variablen keinen Typ angeben, wird vom F#-Compiler am besten erraten, was der Typ durch den Wert sein soll, den Sie der Variablen zuweisen. Berücksichtigen Sie die folgenden Anweisungen:

let age = 65 // int
let PI = 3.14 // float
let name = "my name" // string

Der Compiler leitet ab , was die Typen sein sollen, und es ist richtig. Sie können auch expliziter sein, was der Typ sein soll. Zum Zuweisen von Daten verwenden Sie die Syntax variableName:<type>wie in diesem Code:

let sum:float = 0.0

Häufig möchten Sie in der Lage sein, auf dem Bildschirm zu drucken. Es kann aus verschiedenen Gründen sein, z. B.:

  • Application output: The application is doing some sort of calculation, and you want to see the output.
  • Debuggen: Im Rahmen des Debuggens des Codes müssen Sie möglicherweise das Ergebnis an einem bestimmten Punkt ausgeben, um zu verstehen, was schief läuft.

Es gibt andere Gründe für die Ausgabe auf dem Bildschirm, aber die beiden vorherigen Szenarien sind am häufigsten.

Wie würden Sie also auf dem Bildschirm drucken? In F# gibt es drei verschiedene Funktionen, die Sie verwenden können. Sie sind printf, printfnund sogar Console.WriteLine. Was ist also der Unterschied?

  • printf: Es wird inline stdout gedruckt (kein Zeilenumbruchzeichen).
  • printfn: Es wird gedruckt, um stdout ein Neuzeilenzeichen zu addieren.
  • Console.WriteLine: Diese Funktion stammt aus dem System Namespace und funktioniert in allen .NET-Sprachen.

Jetzt wissen Sie den Unterschied, aber welches sollten Sie verwenden? Nun, printf und printfn werden in F# als idiomatischer und bevorzugter betrachtet.

Formatierung

Im Rahmen des Druckens auf dem Bildschirm können Sie Text und Zahlen kombinieren. Oder Sie möchten, dass die Ausgabe auf eine bestimmte Weise formatiert wird, z. B. mithilfe von:

  • Positionsargumente: Zum Formatieren können Sie eine .NET-Funktion verwenden, die String.Formatpositionale Argumente wie String.Format("My name is {0} and I live in {1}", "Chris", "UK").

  • Zeichenfolgeninterpolation: Eine weitere Möglichkeit zum Kombinieren von Variablen und Text besteht darin, etwas namens Interpolation zu verwenden. Um sie zu verwenden, müssen Sie der Zeichenfolge ein $ Zeichen vorangehen und Platzhalter mit Klammern {}angeben. Hier ist ein Beispiel für die Verwendung der Interpolation:

    let name = "Luis"
    let company = "Microsoft"
    printfn $"Name: {name}, Company: {company}"
    

    Sie können ausdrücke auch zwischen den Klammern hinzufügen, z. B.:

    let firstNumber = 2000
    let secondNumber = 21
    printfn $"The year is: {firstNumber + secondNumber}"
    

    Hinweis

    Es gibt keine Typüberprüfung mithilfe der Interpolation, sodass sie möglicherweise einfach zu verwenden scheint. Achten Sie darauf, dinge richtig zu kombinieren.

  • Bezeichner: Sie können auch Formatbezeichner als Teil des Drucks verwenden. Die Verwendung von Bezeichnern ist die am häufigsten verwendete Methode zum Formatieren in F#. Ein Beispiel:

    let name = "Chris"
    printf "Hi %s" name
    // prints: Hi Chris
    

    Hier sehen Sie, wie der Formatierer %s verwendet wird, um die erste Zeichenfolge mit der Variablen namezu mischen.

    Hinweis

    Wenn Sie Formatierer wie %s oder %iverwenden, überprüft der Compiler typen. Wenn Ihr Positionsargument nicht vom angegebenen Typ ist, wird ein Fehler ausgelöst.

Formatbezeichner

Es gibt viele Formatbezeichner. Hier sind einige, auf die Sie wahrscheinlich stoßen.

Bezeichner BESCHREIBUNG Beispiel
%s Wird für Zeichenfolgen und nicht gescapete Inhalte verwendet printf "Hello %s" name
%d, %i Formatiert als dezimale ganze Zahl, signiert, wenn der einfache ganzzahlige Typ signiert ist printf "Age: %i" 65
%b Boolescher true Wert oder false printf "Einstellung für: %b" true

Es gibt weitere Informationen zur Formatierung. Wenn Sie mehr über alle Funktionen wissen möchten, lesen Sie die Formatierung im F#-Dokument.