gpt4 book ai didi

f# - 为什么我不能将带单位的参数传递给 F# 类型?

转载 作者:行者123 更新时间:2023-12-04 14:35:15 26 4
gpt4 key购买 nike

假设我已经定义了一个度量单位:
[<Measure>] type Blob
我想要一个类型,它以每秒 Blob 为单位的值作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F# 对此表示怀疑 - “double 不需要任何类型参数,但这里给出了 1 个类型参数”

我明白这个消息。我原以为我想要做的事情很明显,尽管我承认语法可能是错误的。问题是,我如何在代码中表达这种关系?

最佳答案

正如消息(有点)所表明的那样, double 不是通用度量。试试 float<Blob/s>反而。有点奇怪,因为float是类型 double 的类型同义词.但是,输入 float<[<Measure>]'t>在某些方面是它自己独立的类型。类似的问题发生在 single对比 float32 , int32对比 int , 和 int8对比 byte . Section 9.7 of the spec部分涵盖了这些信息。

这尤其令人困惑,因为您无法定义自己的类型,这些类型仅在度量数量上有所不同:

type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T

关于f# - 为什么我不能将带单位的参数传递给 F# 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4148164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com