type floatType = float32
let a = 5.0
let b = float32 a // Works
let b' = floatType b // Does not work
是否可以转换为类型缩写?
答案 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
现在你的代码应该可以工作了。