Frage

Kann mir jemand diesen F#-Ausdruck beschreiben?

val augment: GameGrid -> points -> unit

Was bedeutet das val Schlüsselwort bedeuten?

Stimmt das normalerweise? type -> type Gibt eine Funktion an, die den angegebenen Typ zurückgibt?Das gilt auch type -> type -> type eine Funktion angeben, die eine Funktion zurückgibt, die den angegebenen Typ zurückgibt?

War es hilfreich?

Lösung

(Das 'val'-Bit ist kein Ausdruck;Nebenbei denke ich, dass es in drei verschiedenen Kontexten erscheinen kann:

  • Die Ausgabe von FSI (F# Interactive REPL), die den abgeleiteten Typ einer Bindung beschreibt
  • in einer Signaturdatei (.fsi), die den Typ eines let-gebundenen Modulwerts beschreibt
  • in einer Struktur-/Klassendefinition ('explizite' Syntax), um eine Instanzvariable zu definieren

und keines davon sind technisch gesehen Ausdruckskontexte.)

Was den Typ betrifft, in der Tat

A1 -> A2 -> R

bedeutet eine Funktion, die ein A1 annimmt und eine Funktion zurückgibt, die ein A2 annimmt und ein R zurückgibt.Die Argumente sind scharfsinnig, und es kann Ihnen gut tun, z. B. zu lesen:

F#-Funktionstypen:Spaß mit Tupeln und Curry

in dem Currying und Teilanwendung ausführlicher beschrieben werden.

Andere Tipps

Wie hast du diese Ausgabe? In FSI?

Val indiciates nur eine Definition eines Wertes.

z. wenn Sie schrieb in C #

private void Foo(int i);

Sie schreiben würden dies in F #

val Foo : int -> unit

In Bezug auf type -> type -> type: Dies ist eine Funktion mit zwei Parametern (Typ) Rückkehr `Typ'

z.

let plus a b = a + b

hat bekam Unterschrift int -> int -> int.

Ihre Idee mit einer Funktion, die eine Funktion zurückgibt, ist tatsächlich richtig. Dies ist eine sehr interessante Technik in vielen funktionalen Sprachen genannt currying

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