InfoQ

News

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

作者 Jonathan Allen, 翻訳者 編集部 投稿日 2008年9月7日 午後9時57分

コミュニティ
.NET
トピック
プログラミング
タグ
Functional Programming,
Closures,
Visual Basic.NET,
C#

複雑な構文解析を実行する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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。

消費者主導契約を使ったサービス指向開発

この論文では、組織のサービス開発能力改善を目指した実用的な提案をします。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

InfoQ.com向けのこのバーチャルパネルでは、大企業やプロジェクトからスケーラビリティやパフォーマンスの著名人を招待し、みんなが夢に描いているような結果を達成するための秘密を明かしてもらいました。

アジリティのためにコンポーネントチームより機能チームを選ぶ

Craig Larman氏とBas Vodde氏は、どのように、そして、なぜ機能チームがうまくいくのかを説明し、この主要な組織の変化が価値あるものであることを主張します。

仮想化とセキュリティ

仮想化にはたくさんの利点がありますが、かと言って、その上に実装するアプリケーションのセキュリティをないがしろにしてはいけないのです。

Rubyのオープンクラス:猿のようにパッチを当てない方法

最近リリースされたRuby 1.8.7のプレビューリリースをウオッチしていたRails開発者はすぐに1.8.7プレビュー1に関してあることに気がつきました。それは、1.8.7プレビュー1がRailsを破壊してしまうということです。