6

このC#コードをF#に変換しようとしています:

double[,] matrix;

public Matrix(int rows, int cols)
    {
        this.matrix = new double[rows, cols];
    }

 public double this[int row, int col]
    {
        get
        {
            return this.matrix[row, col];
        }
        set
        {
            this.matrix[row, col] = value;
        }
    }

基本的に、私の最大の問題はF#でインデクサーを作成することです。この状況で適用できるものは、Webのどこにも見つかりませんでした。インデクサーをMatrixタイプに組み込むことが明らかでない場合に備えて、クラスの他のいくつかの部分を含めました。したがって、良い答えには、ここにある3つの部分から完全なタイプを作成する方法に加えて、必要になる可能性のあるその他のものが含まれます。また、F#パワーパックのマトリックスタイプを認識していますが、理解しているC#プロジェクトをF#に変換してF#を学習しようとしています。

前もって感謝します、

ボブ

4

1 に答える 1

14

F#はそれらを「インデックス付きプロパティ」と呼んでいます。これがMSDNページです。F#では、動作が少し異なります。インデックス付きの各プロパティには名前があります。

ただし、「アイテム」と呼ばれるデフォルトのものがあります。したがって、例の実装は次のようになります。

member this.Item
  with get(x,y) = matrix.[(x,y)]
  and  set(x,y) value = matrix.[(x,y)] <- value

次に、これにアクセスしinstance.[0,0]ます。「アイテム」以外の名前を付けた場合は、。を使用してアクセスしinstance.Something[0,0]ます。

于 2011-03-04T03:13:27.213 に答える