1

我一直在使用 F# 使用 MS Solver,我需要将域定义为一系列整数。我了解到有一个函数:Domain.IntegerRange,它接受两个 Rational 类型的参数。

在 C# 中使用整数而不是 Rationals 没有问题:http: //msdn.microsoft.com/en-us/library/ff826356 (v=vs.93).aspx?cs-save-lang=1&cs-lang=csharp#代码片段 1

但是,在 F# 中,不接受这种隐式转换。应该如何实施呢?我试图以某种方式基于 int 创建 Rational,但没有这样做。

4

1 回答 1

2

该类Rational支持来自 int、float 等的隐式转换,这在 C# 中是无缝的。另一方面,F# 不会在没有您要求的情况下进行隐式转换……嗯……很明确。

你可以直接调用op_Implicit操作符来得到你想要的:

let rat (i:int) = Rational.op_Implicit(i)
Domain.IntegerRange(rat 6, rat 8)

通常也可以定义一个运算符来执行此操作,请参阅 Tomas对此问题的回答中的标准方法。

于 2013-08-07T23:43:20.720 回答