あんまり管理もしてない今日この頃ですが皆様いか(略)。
今回は型引数をバインドするカリー化ができないかと言う話。
一応解説しておくと、カリー化とは要するに引数の一部を固定した関数を作ることです。こんなサンプルコードでご理解いただけるでしょうか。
static int Add(int x, int y) { return x + y; }
static int Add5(int x) { return Add(x, 5); }
public static void Main() {
Console.WriteLine(Add5(4));
}
この場合、Add メソッドの引数 y を 5 に固定した Add5 メソッドを新たに作成しています。まあサンプルのためのサンプルなんで意味は無いですけどね。ちなみに関数作成はラムダ式など使って表現することが多いです。
static void Main() {
Func<int, int> addx = x => Add(x, 5);
Console.WriteLine(addx(4));
}
' ちなみに VB だとラムダ式はこんな形になるそうな。
Public Shared Sub Main()
Dim addx As Func(Of Integer, Integer) = Function(x) Add(x, 5)
Console.WriteLine(addx(4))
End Sub
本題を読む