f# - 计量单位如何表示?

标签 f# units-of-measurement

我刚开始使用 F# 并且想知道度量单位:

我知道它们只在编译时出现并且 Reflector 确认了这一点:创建一个不是别名的度量单位会创建一个带有 MeasureAttribute 的类。属性,但除此之外,float<km/h>表示为普通 System.Double .并且在类型、构造函数参数或属性上没有属性。

至此我明白了。但是当我从另一个项目引用编译的程序集时,它似乎知道所有关于度量单位的信息,包括别名。它是如何获得这些信息的?他们在大会的什么地方?

最佳答案

F# 将“额外类型信息”存储在已编译程序集中的资源中,并且 F# 编译器知道如何读取该资源。因此,虽然可区分的联合只是被编译成一个类,并且一个度量单位被删除成 double 值,但程序集中的资源中有额外的 F# 特定类型信息,因此当 F# 编译器读取它时,它可以重新构建额外的“F# 元数据”。

PowerPack有一个元数据阅读器,可让您以编程方式访问它。

关于f# - 计量单位如何表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6458615/

相关文章:

f# - 在 F# 中使用字符串路径要求 dll

f# - Elmish.WPF类型冲突: unit -> Model expected where Model provided?

javascript - 将千克转换为磅和盎司的函数

f# - 为什么 F# 会出现模块名称部分重叠的问题?

.net-core - 关于 F# 项目中服务器 GC 的警告

f# - 在 F# 中定义尾递归函数的累加器

python - 如何在 Pint 中定义和使用百分比

c# - 计算网格边之间的距离

android - 获取电池温度和结果单位

algorithm - 将时间和成本转换为单一的统一衡量标准(或分数)