Come rimuovere genericamente le unità di misura F #
-
03-07-2019 - |
Domanda
Ho del codice di manipolazione dei dati che alla fine sputa CSV.
Ho iniziato a aggiornarlo per aggiungere unità di misura ovunque, ma ora ho un problema con la mia funzione CSV:
val WriteCSV : string -> 'a list array -> 'b list -> string -> unit
(i parametri sono fileName, array di colonne, intestazioni di colonna, separatore)
Dove in precedenza avevo inviato [| s; x; y |] a WriteCSV, ora ho un problema, perché non riesco a inviare [| skm; XMM; YMM |.]
Ho provato a scrivere una funzione per rimuovere genericamente unità di misura, ma non funziona.
let removeUnit (n:float<_>) = n/1.0<_>
Le mie domande sono:
- Perché non funziona?
- Può essere fatto funzionare?
- C'è un altro modo per risolvere questo particolare problema?
Soluzione
Se ho risolto il tuo problema, lanciandolo su " pure " float rimuove l'unità. Ad esempio:
[<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 > - gt &; float
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow