Cómo eliminar genéricamente las unidades de medida F #
-
03-07-2019 - |
Pregunta
Tengo un código de manipulación de datos que escupe csv al final.
Comencé a actualizarlo para agregar unidades de medida en todas partes, pero ahora tengo un problema con mi función csv:
val WriteCSV : string -> 'a list array -> 'b list -> string -> unit
(los parámetros son fileName, array de columnas, encabezados de columna, separador)
Donde anteriormente envié [| s; x; y |] a WriteCSV, ahora tengo un problema, porque no puedo enviar [| skm; xmm; ymm |].
Intenté escribir una función para eliminar genéricamente unidades de medida, pero no funciona.
let removeUnit (n:float<_>) = n/1.0<_>
Mis preguntas son:
- ¿Por qué no funciona?
- ¿Se puede hacer que funcione?
- ¿Hay otra forma de resolver este problema en particular?
Solución
Si entendí bien su problema, póngalo en " pure " El flotador elimina la unidad. Por ejemplo:
[<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 > - > flotador
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow