【C#】部分適用

部分適用は、複数の引数を持つ関数の一部の引数を固定して新しい関数を作成する操作です

Func<int, int, int> add = (x, y) => x + y;
Func<int, Func<int, int>> addPartial = x => y => add(x, y);

Func<int, int> add5 = addPartial(5);
int result = add5(3);
Console.WriteLine(result); // 出力: 8

このコードは、C#で部分適用を用いて関数を作成し、それを使用して2つの数値を足し合わせる操作を行っています。

  1. Func<int, int, int> add = (x, y) => x + y;
    • addは、2つの整数を受け取り、それらを足し合わせて結果を返す関数を表します。
  2. Func<int, Func<int, int>> addPartial = x => y => add(x, y);
    • addPartialは、整数 x を受け取り、y を受け取る関数を返す関数です。
    • 内部のラムダ式 (x, y) => add(x, y) では、add 関数を呼び出して部分適用された関数を生成しています。この部分適用された関数は、最初の引数 x を保持し、2番目の引数 y を受け取って add 関数を呼び出します。
  3. Func<int, int> add5 = addPartial(5);
    • add5 は、addPartial を呼び出して部分適用された関数を取得しています。add5 は、1つの整数を受け取り、それを add 関数の2番目の引数として与えることで、その整数と5を足し合わせる関数です。
  4. int result = add5(3);
    • add5 を呼び出して部分適用された関数に引数 3 を渡し、結果を result 変数に格納しています。この場合、add5 の内部では、最初の引数 5 と2番目の引数 3 を足し合わせることで、結果として 8 を返します。
  5. Console.WriteLine(result); // 出力: 8
    • result の値である 8 をコンソールに出力します。

このコードは、部分適用を使用して関数の再利用とコードの簡潔さを実現しています。最初の add 関数を部分適用して新しい関数を作成し、それを再度部分適用して新たな関数を作成することで、異なる引数を保持する関数を作成しています。

C#

Posted by hidepon