このブログの中を検索する

2012/05/21

デザインパターンを言語機能化

title: デザインパターンを言語機能化
url: http://csharptan.wordpress.com/2011/12/24/%e3%83%a1%e3%82%bf%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/

snippet:
-----引用-----

プログラミングには、「こういう場面はこう書くべきです」というようなパターンがつきものです。
「このパターン通りに書け」だと意識の高い人しか実践してくれませんが、「この文法使うと便利だよ」なら割とみんな使ってくれます。
C#にはそんな、パターンだったものを文法化したものがいくつかあります。

イベント
C#の場合、オブザーバー パターンに相当する機能は、イベント構文という専用の構文があって、1行で書けます。

public event EventHandler<int> Progress;

イテレーター
C#にはイテレーター構文というものがあって、このパターンを劇的に簡素化できます。以下の通りです。

public static IEnumerable<T> Where<T>(IEnumerable<T> source, Func<T, bool> cond)
{
    foreach (var x in source)
        if (cond(x))
            yield return x;
}

-----引用-----

0 件のコメント:

コメントを投稿