Wert in F # erhöhen

7

Vielleicht ist es zu einfach, aber ich kann im Web keine Antwort finden Ich versuche, Wert in F # zu erhöhen (wie count++ in C #).
Ich möchte keine "veränderbare" Option verwenden, Ich möchte nur ein Beispiel sehen, welche Increment-Funktion in F # aussehen sollte.
Und wie benutze ich es.

    
cheziHoyzer 04.03.2013, 22:12
quelle

3 Antworten

19

Die Idee, einen Wert im gleichen Sinne wie in C ++ zu inkrementieren, macht nur dann Sinn, wenn Sie mit veränderbaren Werten arbeiten oder wenn Sie eine veränderbare Referenzzelle verwenden (im Wesentlichen ein einfaches Objekt, das einen veränderbaren Wert speichert). . Wenn Sie eine veränderbare Referenzzelle haben, können Sie incr function:

verwenden %Vor%

Wenn Sie eine veränderbare Variable verwenden, dann gibt es dafür keine eingebaute Funktion und Sie müssen count + 1 :

schreiben %Vor%

Wenn Sie Code schreiben, der unveränderliche Werte verwendet, schreiben Sie in der Regel einfach count + 1 und übergeben das Ergebnis dann an eine Funktion (oder woanders - dies hängt vom jeweiligen Fall ab). Um beispielsweise die Länge einer F # -Liste zu berechnen, würden Sie Folgendes schreiben:

%Vor%

In diesem Beispiel ist der Ausdruck 1 + (...) der Code, der i++ in einem C ++ - Code entspricht, der über eine Liste iteriert und seine Länge berechnet. Das Ergebnis des Ausdrucks wird keiner neuen Variablen zugewiesen, da es direkt als Ergebnis der length -Funktion zurückgegeben wird.

BEARBEITEN Die Parameter von Funktionen sind unveränderlich, dh Sie können ihre Werte nicht ändern. Wie von Lee erwähnt, können Sie mit dem variablen Shadowing den alten Wert durch einen neuen ausblenden - beachten Sie jedoch, dass dies nur einen lokalen Effekt hat (es ist, als würde man eine neue Variable mit anderem Namen definieren, um den neuen Wert zu speichern). Zum Beispiel:

%Vor%

Sie können keine Funktion schreiben, um die Zeile let count = count + 1 zu vereinfachen, und wie oben erwähnt, entspricht das dem Schreiben von let newCount = count + 1 und dann dem Verwenden von newCount in der letzten Zeile.

    
Tomas Petricek 04.03.2013 22:17
quelle
3

Wenn du mutable nicht verwenden willst, kannst du keine destruktive Aktualisierung durchführen, wie% code_% in C # ist. Sie könnten eine Variable mit einer neuen mit dem gleichen Namen versehen, z. B.

%Vor%

obwohl Sie dies nicht als Funktion schreiben konnten.

BEARBEITEN: Wenn Sie veränderbare Variablen verwenden möchten, können Sie eine Funktion erstellen, die ein ref :

%Vor%

Sie können es dann als

verwenden %Vor%

Wie Tomas in seiner Antwort ausführt, existiert diese Funktion bereits und heißt ++ .

    
Lee 04.03.2013 22:22
quelle
3

Sie können keinen Post-Increment-Operator simulieren, aber Sie können eine Vorinkrementierung durchführen

%Vor%

oder

%Vor%     
user2134631 05.03.2013 07:01
quelle

Tags und Links