BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース クロージャーでAPI設計および使用法を改善

クロージャーでAPI設計および使用法を改善

複雑な構文解析を実行するAPIによっては、イベントを通じて中間結果を公開するものがある。たとえば、XDocument.Validate拡張メソッドはイベントを使用し、プログラムに検証エラーがあることを通知する。

従来の.NETプログラミングでは、これらのイベントのキャッチは、各イベントで別々の機能を作成することを意味していた。イベントハンドラーに出入りする追加情報を渡す直接的な手段が存在しないため、これらの機能は通常throwawayクラス内で実装される。

 

Eric White氏はクロージャーを使用し、より良い方法をデモしている。クロージャーは、ラムダや匿名インライン機能の特殊なケースである。クロージャーを特 殊にさせているのは、それにローカルではない変数を参照することができるが、ラムダを含んでいる機能にはローカルである点である。このおかげで、Eric 氏はイベント処理ロジックを機能に対してローカルに維持する(リンク)ことができる。以下のラインは、作成中および検証機能に渡されているクロージャーを示してい る。

 

snippet.Validate(schemas, (o, e) => errors += e.Message + Environment.NewLine);

補足として、C#およびVBのクロージャーは、必要なメンバー変数を含む匿名クラスとして実装される。「閉鎖」変数は新たなクラスに移行されて、元の機能とそれが含むすべての匿名機能によって参照される。

原文はこちらです:http://www.infoq.com/news/2008/09/Closures-API

この記事に星をつける

おすすめ度
スタイル

BT