タグ

クロージャに関するyuji1982のブックマーク (2)

  • 匿名メソッドの仕組み - 匣の向こう側 - あまりに.NETな

    C#2.0の匿名メソッドは直感的でない動作をするので、あちこちで議論になります。原因の1つにコンパイラがソースコードからは想像がつかないコードを生成していることが挙げられると思います。コンパイラがかなりのコードを生成していますが、大きく分けて3つのパターンあって、それらが分かると匿名メソッドを理解しやすくなります。 まずは、ソースコードとしては一番単純な(一番直感的では無い)例から。 using System; public class App { delegate void D (); public static void Main () { D[] ds = new D [10]; for (int i = 0; i < ds.Length; ++i) { ds [i] = delegate { Console.Write ("{0} ", i); }; } foreach (D d

    匿名メソッドの仕組み - 匣の向こう側 - あまりに.NETな
    yuji1982
    yuji1982 2008/01/29
    昔はまったなー。akirameiさんの説明わかり易い^^
  • Martin Fowler's Bliki in Japanese - クロージャ

    http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基的にクロージャとは、ブ

  • 1