我刚开始使用 F# 并且想知道度量单位:
我知道它们只在编译时出现并且 Reflector 确认了这一点:创建一个不是别名的度量单位会创建一个具有 MeasureAttribute
属性的类,但除此之外, float<km/h>
表示为普通的 System.Double
。并且没有类型、构造函数参数或属性的属性。
至此我明白了。但是当我从另一个项目引用编译的程序集时,它似乎知道所有关于度量单位的信息,包括别名。它是如何获得这些信息的?他们在大会的什么地方?
最佳答案
F# 将“额外类型信息”存储在已编译程序集中的资源中,并且 F# 编译器知道如何读取该资源。因此,虽然可区分联合只是被编译成一个类,而一个度量单位被擦除成 double ,但在程序集中的资源中有额外的特定于 F# 的类型信息,因此当 F# 编译器读取它时,它可以重新构建额外的“F# 元数据”。
PowerPack 有一个元数据阅读器,可让您以编程方式访问它。
关于f# - 计量单位如何表示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6458615/