Wie man allgemein F # Maßeinheiten entfernen
-
03-07-2019 - |
Frage
Ich habe einige Datenmanipulation Code bekam, die am Ende csv ausspuckt.
Ich begann es ein Upgrade Maßeinheiten hinzuzufügen überall, aber ich habe jetzt ein Problem mit meiner csv-Funktion:
val WriteCSV : string -> 'a list array -> 'b list -> string -> unit
(die Parameter sind, Dateiname, Spaltenanordnung, die Spaltenüberschriften, Abscheider)
Wo ich vorher gesendet [| s; x; y |] zu WriteCSV, habe ich jetzt ein Problem haben, weil ich nicht [senden | skm; xmm; ymm |.]
Ich habe versucht, eine Funktion zu schreiben für allgemein Maßeinheiten zu entfernen, aber es funktioniert nicht.
let removeUnit (n:float<_>) = n/1.0<_>
Meine Fragen sind:
- Warum es nicht funktioniert?
- Kann es gemacht werden, um zu arbeiten?
- Gibt es eine andere Möglichkeit, dieses besondere Problem zu lösen?
Lösung
Wenn ich dein Problem richtig verstanden habe, Gießen Sie es auf „reine“ float der Einheit entfernt. Zum Beispiel:
[<Measure>] type m
[<Measure>] type km
let removeUnit (x:float<_>) =
float x
let foo = removeUnit 2.6<m>
let foo2 = removeUnit 2.1<km>
val removeUnit: float < 'u> -> float
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow