【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つの数値を足し合わせる操作を行っています。
Func<int, int, int> add = (x, y) => x + y;
add
は、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
関数を呼び出します。
Func<int, int> add5 = addPartial(5);
add5
は、addPartial
を呼び出して部分適用された関数を取得しています。add5
は、1つの整数を受け取り、それをadd
関数の2番目の引数として与えることで、その整数と5を足し合わせる関数です。
int result = add5(3);
add5
を呼び出して部分適用された関数に引数3
を渡し、結果をresult
変数に格納しています。この場合、add5
の内部では、最初の引数5
と2番目の引数3
を足し合わせることで、結果として8
を返します。
Console.WriteLine(result); // 出力: 8
result
の値である8
をコンソールに出力します。
このコードは、部分適用を使用して関数の再利用とコードの簡潔さを実現しています。最初の add
関数を部分適用して新しい関数を作成し、それを再度部分適用して新たな関数を作成することで、異なる引数を保持する関数を作成しています。
ディスカッション
コメント一覧
まだ、コメントがありません