Java.use(better);
□ 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