2008年07月05日

ジェネリックカレー

あんまり管理もしてない今日この頃ですが皆様いか(略)。

今回は型引数をバインドするカリー化ができないかと言う話。

一応解説しておくと、カリー化とは要するに引数の一部を固定した関数を作ることです。こんなサンプルコードでご理解いただけるでしょうか。

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
本題を読む
posted by Hongliang at 13:01| Comment(0) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。