Erweiterungsmethoden für bestimmte generische Typen

8

Ich versuche, verschiedene Erweiterungsmethoden für einen generischen Typ zu erstellen, der an bestimmte generische Typparameter in F # gebunden ist, aber die Sprache scheint es mir nicht zu erlauben:

Was ich machen möchte, ist etwas wie das Folgende:

%Vor%

Aber es gibt mir den Compiler Fehler (Unterstreichung der int Schlüsselwort):

  

Unerwarteter Bezeichner im Typnamen. Erwarteter Infix-Operator, Anführungszeichen oder anderes Token.

Das folgende funktioniert , obwohl es den generischen Typparameter nicht wie gewünscht an int bindet:

%Vor%

Gibt es eine Möglichkeit, dieses Ziel in F # zu erreichen - verwende ich vielleicht nur die falsche Syntax? Wenn nicht, würde ich mich freuen, wenn jemand einen Workaround vorschlagen könnte, vielleicht irgendwo mit type constraint.

    
Noldorin 07.10.2009, 13:15
quelle

4 Antworten

7

Dies ist leider in der aktuellen Version von F # nicht möglich. Siehe verwandte Frage hier .

    
kvb 07.10.2009, 13:51
quelle
6

Generische Erweiterungsmethoden sind jetzt in F # 3.1 verfügbar:

%Vor%     
dharmatech 22.04.2014 00:54
quelle
0

Nun, Sie können Constraints verwenden - aber nicht mit versiegelten Typen wie int.

%Vor%

Hmm ...

    
Massif 07.10.2009 13:31
quelle
0

Um anderen zu helfen, die nach ähnlichen Lösungen suchen, finden Sie hier ein Beispiel, wie generische Erweiterungsmethoden mit Typbeschränkungen verwendet werden. Im folgenden Beispiel gibt es eine Typbeschränkung, die erfordert, dass das übergebene type-Argument einen Standardkonstruktor verfügbar macht. Dies geschieht mithilfe des Attributs [<CLIMutable>] , das auf den Datensatz Order angewendet wird. Außerdem beschränke ich das Ergebnis der Methode auf den übergebenen Typ.

Um die Erweiterungsmethode zu verwenden, müssen Sie den Typ angeben, den Sie verwenden möchten. Beachten Sie, dass ich auch eine generische Wörterbuchschnittstelle erweitere.

%Vor%     
Mário Meyrelles 17.07.2016 01:30
quelle