Wie kann ich ein Erweiterungselement auf einer F # -Maßeinheit definieren?

9

Abgesehen davon, ob wir Maßeinheiten für Einheitenlose Konzepte wie Winkel verwenden sollen, nehme ich an, dass ich degree und radian Einheiten in F # definiert habe

%Vor%

Ich kann sie relativ einfach benutzen wie

%Vor%

Es scheint, als wären Mitglieder der Erweiterung noch handlicher. Also könnte ich einfach sagen

%Vor%

Aber ich kann das Erweiterungselement nicht auf die offensichtliche Weise definieren

%Vor%

... das bringt mir den folgenden Fehler

%Vor%

Gibt es einen syntaktischen Trick für Erweiterungselemente in Maßeinheiten in F # oder wird die Funktion unterstützt?

    
Sebastian Good 22.08.2011, 21:39
quelle

1 Antwort

5

F # -Erweiterungsmember unterscheiden sich von C # -Erweiterungsmembern dadurch, dass Sie Erweiterungen generierter Typen nicht definieren können. Zum Beispiel können Sie Erweiterungen für seq<'t> , aber nicht für seq<int> definieren. Mit anderen Worten, Erweiterungselemente verhalten sich eher wie Elemente des Typs als statische Methoden. Dies gilt auch für Maßtypen. Sie können also keine Erweiterung für float<degree> definieren, aber Sie können eine Erweiterung für float<[<Measure>]'u> definieren:

%Vor%

Allerdings sehe ich nicht, wie Ihnen das in Ihrem Fall hilft ...

    
kvb 23.08.2011, 00:06
quelle