F # -Kompilierungsfehler: Unerwarteter Anwendungstyp

9

In F # mit der folgenden Klasse:

%Vor%

Warum kompiliert das folgende:

%Vor%

Während Folgendes nicht kompiliert wird:

%Vor%     
Jim Burger 30.04.2010, 07:53
quelle

1 Antwort

14

Es sieht so aus, dass das Bereitstellen von Typparametern beim Behandeln von Methoden als erster Klassenwert nicht unterstützt wird. Ich habe die F # -Spezifikation überprüft und hier sind einige wichtige Teile:

  

14.2.2 Artikelqualifizierte Suche
  [Wenn der Anwendungsausdruck mit beginnt:]

     
  • <types> expr , dann verwenden Sie <types> als Typargumente und expr als Ausdruck   Argument.
  •   
  • expr , verwenden Sie dann expr als Ausdruckargument.
  •   
  • Verwenden Sie andernfalls kein Ausdrucksargument oder Argumenttypen.
  •   
  • Wenn die [Methode] mit der Bezeichnung    RequiresExplicitTypeArguments -Attribut muss dann explizite Typargumente haben   gegeben worden.
  •   

Wenn Sie Typargumente und Argumente angeben, gilt der erste Fall, aber wie Sie sehen, erfordert die Spezifikation auch einige tatsächliche Argumente. Ich bin mir nicht ganz sicher, was die Motivation dafür ist.

Wenn Sie den type-Parameter irgendwo in der Typ-Signatur des Members verwenden, können Sie ihn mit Typ-Annotationen wie diesem angeben:

%Vor%

Wenn Sie andererseits den Typparameter nirgends in der Signatur verwenden, bin ich nicht ganz sicher, warum Sie ihn überhaupt benötigen. Wenn Sie es nur für einige Laufzeitverarbeitung benötigen, können Sie möglicherweise die Laufzeittypdarstellung als Argument verwenden:

%Vor%     
Tomas Petricek 30.04.2010, 09:17
quelle

Tags und Links