提问人:LA.27 提问时间:8/25/2023 最后编辑:LA.27 更新时间:8/29/2023 访问量:79
F# 按位运算符和度量单位
F# Bitwise operators and units of measure
问:
当我在代码中定义度量单位时,我可以毫无问题地对带有该单位的值使用基本的算术运算符,例如
type [<Measure>] m
let a = 1<m>
let b = 2<m>
(* no problem *)
let result = a + b
但是,我不能使用按位运算符:
type [<Measure>] m
let a = 1<m>
let b = 2<m>
(* error: The type 'int<m>' does not match the type 'int' *)
let result = a &&& b
有没有办法使按位运算符与度量单位兼容?
答:
3赞
Michael Samoilenko
8/29/2023
#1
F# 度量单位与 &&&(按位 AND)、|||(按位 OR)和 ^^^(按位 XOR)。这样做的原因是,度量单位是一种静态类型检查功能,主要用于数值计算的安全性和正确性,并且这些类型不支持开箱即用的按位运算。
评论
0赞
LA.27
9/5/2023
如果我理解正确,它不是开箱即用的。还有什么比删除计量单位、应用按位运算符和恢复计量单位更好的吗?
1赞
Michael Samoilenko
9/6/2023
@LA.27,老实说,我只能看到那个解决方案
评论