In F # mit der folgenden Klasse:
%Vor%Warum kompiliert das folgende:
%Vor%Während Folgendes nicht kompiliert wird:
%Vor%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 undexpr
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%Tags und Links f# generics pipelining