Как вообще удалить F # Единицы измерения - PullRequest
3 голосов
/ 05 января 2009

У меня есть некоторый код манипулирования данными, который выдает csv в конце.

Я начал обновлять его, чтобы везде добавлять единицы измерения, но теперь у меня проблема с моей функцией csv:

val WriteCSV : string -> 'a list array -> 'b list -> string -> unit

(параметры fileName, массив столбцов, заголовки столбцов, разделитель)

Там, где я ранее отправил [| s; x; y |] в WriteCSV, у меня теперь есть проблема, потому что я не могу отправить [| skm; XMM; YMM |.]

Я пытался написать функцию для общего удаления единиц измерения, но она не работает.

let removeUnit (n:float<_>) = n/1.0<_>

Мои вопросы:

  • Почему это не работает?
  • Можно ли заставить его работать?
  • Есть ли другой способ решения этой конкретной проблемы?

1 Ответ

7 голосов
/ 05 января 2009

Если я правильно понял вашу проблему, приведение ее к «чистому» значению удаляет юнит. Например:

[<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

...