Единица измерения F#, Бросающая, не теряя тип меры

Там создается в версии функций преобразования типа, которая сохраняет единицы и если не, как я сделал бы их? Так, например, с этим кодом, как я бросил бы intWithSecondsMeasure к плаванию, не теряя меру или умножившись 1.0<s>?

[<Measure>] type s
let intWithSecondsMeasure = 1<s>
let justAFloat = float intWithSecondsMeasure 
13
задан gradbot 12 December 2009 в 18:12
поделиться

2 ответа

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

let float_unit (x:int<'u>) : float<'u> = unbox float x
let floatWithSecondsMeasure = float_unit intWithSecondsMeasure
8
ответ дан 1 December 2019 в 21:24
поделиться

См. Мой ответ на этот вопрос:

Безопасные для единиц квадратные корни

, из которых сегодня можно предположить:

[<Measure>] 
type s
let intWithSecondsMeasure = 1<s>

let intUtoFloatU< [<Measure>] 'u>( x : int<'u> ) : float<'u> = //'
    let i = int x       //  drop the units
    let f = float i     //  cast
    box f :?> float<'u> //' restore the units

let floatWithS = intUtoFloatU intWithSecondsMeasure
3
ответ дан 1 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: