【发布时间】:2014-08-23 23:51:45
【问题描述】:
我希望能够生成特定范围的随机数,这些随机数是 <'T> 可以是 [<Measure>] type X 或 [<Measure>] type Y 的度量
let GenerateLine<'T> (rnd:System.Random, min:int<_>, max:int<_>) : (int<_> * int<_>) =
let v1:int< 'T > = rnd.Next(int(min),int(max)+1)
let v2:int< 'T > = rnd.Next(int(min),int(max)+1)
(v1,v2)
我也用inline 关键字在let 之后尝试了同样的方法
和
let GenerateLine (rnd:System.Random, min max) =
let v1 = rnd.Next(min,max+1) * LanguagePrimitives.GenericOne
let v2 = rnd.Next(min,max+1) * LanguagePrimitives.GenericOne
(v1,v2)
还有
let GenerateLine< ^T> (rnd:System.Random, min:< ^T >, max:< ^T > ) =
但我似乎没有弄清楚这一点或遵循诸如此类的事情背后的逻辑 How to write a function for generic numbers?
如何编写跨度量通用的方法/函数?
【问题讨论】:
-
您需要使用Int32WithMeasure 将普通的
ints 转换为int<'T>。 -
怎么样?尝试签名中的哪一个?
-
Int32WithMeasure 是一个函数 - 使用 GenericOne 作为参数