DSL / Closures


DSL

クロージャ

一言要約

クロージャを使用することで、スコープを制限した内部DSLを記述することが出来る。

要約

  • 内部DSLを実現する際に、クロージャを使用することで、次のようなメリットがある。
    • コンテキストを保持するための変数のスコープを制限できる。(余計な変数が現れないし、コンテキストが生きている範囲(=スコープ)を明確化できる。)
    • 実際のメソッド呼び出しは遅延評価にできる。(すぐに評価するか、後で評価するか、選ぶことが出来る。)
    • 階層構造を持たせることが出来る。(クロージャを使って、入れ子構造も自然に表現できる。)
  • クロージャをアサーションに使うことで、アサーションが不要なときに、余計な処理を省くことが出来るようになる。

ファウラーへのフィードバック

担当者のつぶやき

  • アサーションとクロージャとの関係の話は興味深いが、DSL とは関係ないのでは?
  • それより、階層構造を持つ内部 DSL をクロージャを使って書くとどうなるのかを解説してあるともっと良いのに。
  • なんとなくではあるが、クロージャは DSL にとって、もっと有用な使い方がありそうな気がする。

みんなの突っ込み