6

F# では**べき乗に演算子が使用されていることがわかり2 ** 5 = 32ます。これは、カスタム型で '^' 演算子を使用するオプションがある C# とは異なりますが、何らかの理由で組み込みの数値型では使用されません。

しかし、F# プロジェクトで使用するために C# で ** 演算子を実装するにはどうすればよいでしょうか?

C# でこれを行う場合:

public static Integer operator ^(Integer left, Integer right)
{
    if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
    return left.RaiseToPower(right);
}

これは正常にコンパイルされ、'+' 演算子と同じように使用できますが、F# ではどちらも機能しません。

let intgr3 = intgr1 ** intgr2

let intgr3 = intgr1 ^ intgr2

C# では、これは機能しません。

public static Integer operator **(Integer left, Integer right)
{
    if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
    return left.RaiseToPower(right);
}

**では、C# の演算子に相当する F# を定義するにはどうすればよいでしょうか?
ありがとう。

4

2 に答える 2

2

オブジェクトに ** 演算子を定義できない理由は、これが言語でサポートされている演算子の 1 つでないためだと思います。認識された演算子ではありません.Math ライブラリ http://msdn.microsoft.com/en-us/library/system.math.pow.aspxを使用しない理由

于 2013-09-17T04:37:41.987 に答える