Java.use(better);

前の記事次の記事
Java.use(better);


Episode#06

NullObject パターンの効能 -- if と別れる50の方法


《関連記事》

Scala: パターンマッチングの効能

パターンマッチング〔= pattern matching〕を利用すると、Java では複雑になりがちなコードの断片を簡潔に表現できます。

  ... match {
    case パターン => 式の並び
    ...
  }

match に続くブロックには、一連の選択肢〔= alternative〕を記述します。各選択肢は、case の後にパターンと式を => で区切ったものです。
match を制御メソッドの一種と見なすと、

  object.match {
    case pattern => expression
    ...
  }

制御メソッド match は、object の種別に依存しないので「ポリモフィズム」を体現しているのが分ります。たとえば、条件反復に代わる制御メソッド for があると、

    for (Object seq: new Object {
      Arrays.asList(new String { ... }),
      new ExTokenizer(...),
      new ExFile(...)
    }) {
      for (String e: (Iterable)seq) {
        ...
      }
    }

任意のインスタンス e に対して、ブロック内にあるコードの断片を再利用できます。このコードは、オブジェクトの種別に依存しません。

コンストラクターパターン〔= constructor pattern〕を利用すると、コードを簡潔に表現できます。指定したパターンと照合するものがあると、対応する式が評価されます。このとき、コンストラクターパターンに指定した引数によって、各フィールドを参照できます。たとえば、

    case Const(value) => value

引数 value を介して、定数の値を参照できます。また、

    case Add(left,right) => left.eval + right.eval

引数 left/right を介して、左右の式の値(部分木)を参照できます。


 ↑ TOP

》作業中です《

update*13/02/12 20:41:43