1

私は F# を使用して MS ソルバーで遊んでおり、ドメインを int の範囲として定義する必要があります。Rational 型の 2 つのパラメーターを取る Domain.IntegerRange という関数があることを知りました。

C# では、Rationals の代わりに int を使用しても問題ありません: 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 に答える