gpt4 book ai didi

F# 测量单位,类型转换时不丢失测量类型

转载 作者:行者123 更新时间:2023-12-02 20:18:53 24 4
gpt4 key购买 nike

是否有保留单位的类型转换函数的内置版本,如果没有,我将如何制作它们?例如,使用这段代码,我如何将 intWithSecondsMeasure 转换为 float 而不丢失度量或乘以 1.0<s>

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

最佳答案

@kvb 提供的答案当然有效,但我不想使用 unbox 运算符进行此转换。有一种更好的内置方式,我认为应该将其编译为 NOP 到 IL(我没有检查过,但 unbox 可能最终会作为 unbox 指令在 IL 中,因此添加了运行时类型检查)。

在 F# 中进行单位转换的首选方法是 LanguagePrimitives.TypeWithMeasure ( MSDN )。

let inline float32toFloat (x:float32<'u>) : float<'u> = 
x |> float |> LanguagePrimitives.FloatWithMeasure

关于F# 测量单位,类型转换时不丢失测量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com