gpt4 book ai didi

f# - 如何声明保留度量单位的通用转换运算符?

转载 作者:行者123 更新时间:2023-12-04 03:12:17 24 4
gpt4 key购买 nike

F# 中的内置转换运算符消除了度量单位。我想定义那些保留它们的。对于一个特定的转换,我可以做得很好,例如整型 float :

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

但我不知道泛型 ((任何带有 op_Implicit ^m -> float) -> float) 运算符的语法是什么:

let inline floatM (x:^m<'u>) =
x |> float |> LanguagePrimitives.FloatWithMeasure<'u>
// FS0712: Type parameter cannot be used as type constructor

这有可能吗?

最佳答案

我是这样做的:

let inline toIntWithMeasure<[<Measure>] 'a> (x:obj) =
match x with
| :? int as i -> i |> LanguagePrimitives.Int32WithMeasure<'a>
| _ -> failwith "Not an int!"

关于f# - 如何声明保留度量单位的通用转换运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44086514/

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