Как распечатать полученные единицы измерения с использованием единиц измерения в F #? - PullRequest
4 голосов
/ 05 декабря 2010

Я начинаю изучать, как использовать единицы измерения в F #, но я еще не нашел ответа на этот простой вопрос. Как распечатать результирующие единицы после расчета. Я знаю, что FSI их печатает, чтобы они как-то были доступны.

Например:

[<Measure>] type m;;

[<Measure>] type s;;

let d = 10<m>;;
val d : int<m> = 10

let t = 2<s>;;
val t : int<s> = 2

Я хочу сделать что-то вроде этого:

printfn "Results: %A %A" (d / t) (UOM (d / t));;
"Results: 5 m/s"

Заранее спасибо

1 Ответ

6 голосов
/ 05 декабря 2010

К сожалению, это невозможно.

Единицы измерения существуют только во время компиляции. Когда вы компилируете программу, они будут облегчены (потому что .NET не имеет никакого способа представления модулей для типов). Это означает, что во время выполнения результат вашего вычисления будет просто float. Я не думаю, что есть какой-то другой способ, кроме как просто записать в коде модули в виде строки ...

Был некоторый связанный вопрос некоторое время назад. В нем есть еще несколько деталей, а также объясняется, почему вы не можете получить информацию о единицах, используя отражение.

...