![](/img/trans.png)
[英]Why default arguments in F# (FSharpOption<T>) are reference types?
[英]Why can't I pass arguments with units to F# types?
假设我已经定义了一个度量单位:
[<Measure>] type Blob
我想要一个类型,以每秒Blobs的值作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F#对此抛出一个摇摆不定 - “double不期望任何类型的参数,但这里给出了1个类型的参数”
我理解这个消息。 我曾经认为我试图做的很明显,但我承认语法可能是错误的。 问题是,我如何在代码中表达这种关系?
正如消息(类型)所示,双打不是度量通用的。 尝试float<Blob/s>
。 这有点奇怪,因为float
是double
类型的同义词。 但是,类型float<[<Measure>]'t>
在某些方面是它自己的单独类型。 single
与float32
, int32
与int
,以及int8
与byte
相似。 规范的第9.7节部分涵盖了这些信息。
这是特别令人困惑的,因为你不能定义自己的类型,只有它们的度量不同:
type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.