Como remover genericamente F # unidades de medida
-
03-07-2019 - |
Pergunta
Eu tenho algum código de manipulação de dados que cospe csv no final.
Eu comecei a atualizá-lo para adicionar unidades de medida em todos os lugares, mas agora tenho um problema com a minha função CSV:
val WriteCSV : string -> 'a list array -> 'b list -> string -> unit
(os parâmetros são nomeArquivo, matriz de coluna, os cabeçalhos da coluna, separador)
Onde eu enviada anteriormente [| S; x; y |] para WriteCSV, agora tenho um problema, porque eu não posso enviar [| skm; XMM; ymm |.]
Eu tentei escrever uma função para unidades de medida remoção genericamente, mas ele não funciona.
let removeUnit (n:float<_>) = n/1.0<_>
As minhas perguntas são:
- Por que não funciona?
- Pode ser feito ao trabalho?
- Existe outra maneira de resolver este problema particular?
Solução
Se eu tenho o seu problema direito, lançando-a flutuar "pura" remove a Unidade. Por Exemplo:
[<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> -> flutuador
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow