如何转换为类型缩写?

时间:2015-12-21 15:09:35

标签: casting f#

type floatType = float32
let a = 5.0
let b = float32 a // Works
let b' = floatType b // Does not work

是否可以转换为类型缩写?

2 个答案:

答案 0 :(得分:4)

是的,可以使用类型别名进行投射,但是你没有投射,这不是投射的语法。在您的示例中,您使用的是explicit conversion

施法是另一回事,它可以转换成"对于超类(向上转换)或子类(向下转换),请参阅此示例的修改:

type floatType = float32
let a = box 5.0f 
let b  = a :?> float32
let b' = a :?> floatType

此示例为向下转换,您可以看到它与别名一起使用。

即使没有类型注释,也无法从float投射到float32

答案 1 :(得分:2)

编写float32 a时,您正在使用函数Microsoft.FSharp.Core.Operators.float32,该函数显式转换为不带单位的单精度浮点数。

如果您想允许floatType的类似用法,可以在定义中添加以下内容:

let inline floatType a = float32 a

现在你的代码应该可以工作了。