3
type A =
  {
    ...
    id: int;
    ...
  }

これができたらいいのに

let Add (x:A) (y:A) =
     match x,y with
      | {x.id=0,y.id=1} -> ...

xそして、y(関数が対称になるように)の順序を気にしない場合、関数を定義するためのトリックはありますか?また、パラメーターがtuple (x,y)高階関数であるかどうかは気にしませんx,y

4

2 に答える 2

12

この別の構文は次のとおりです。

let add x y =
    match x, y with
    | {id = 0}, {id = 1} | {id = 1}, {id = 0} -> ..
    | _ -> ..

http://msdn.microsoft.com/en-us/library/dd547125.aspxのレコード パターン セクションを参照してください。

于 2012-09-03T15:01:29.087 に答える
4
let add (x: A) (y: A) =
     match x.id, y.id with
     | 0, 1 | 1, 0 -> (* do some thing *)
     | _ -> (* do some thing else *)

フィールドのみを気にする場合は、そのフィールドで直接パターン マッチングを行います。また、 Or パターンを使用して対称関数を使用できます。

于 2012-09-03T14:14:29.627 に答える