【问题标题】:How are units of measure represented?计量单位如何表示?
【发布时间】:2011-09-21 11:09:04
【问题描述】:

我刚从 F# 开始,想知道计量单位:

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

到目前为止,我明白了。但是当我从另一个项目中引用已编译的程序集时,它似乎知道所有关于度量单位的信息,包括别名。它是如何获得这些信息的?他们在哪里?

【问题讨论】:

    标签: f# units-of-measurement


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2018-02-02
      相关资源
      最近更新 更多