月曜日, 5月 04, 2009

[Scala] DynamicVariableとは

ScalaでDSLということで、DynamicVariableについて勉強中。あの記事においては、大体以下の流れであろうと思う。

DynamicVariableのインスタンスであるoutは、withValueメソッドの引数で与えられたインスタンスを示すようになる(そのインスタンスに成り代わってしまうイメージ)
・だから、outさんは共に与えられたパスでファイルを開いた_outさんになってしまう
・そして、その与えられたブロック内で呼ばれたwriteメソッドは、オーバライドされたout.value.writeであるので、結局_outさんが書く事になる

うーん。分かったような、分からんような。。withValueメソッドがset(そしてvalueがget)に相当していることは分かった。

なお、ここでwriteが書かれているような、メソッドに渡されるブロック(=クロージャ?/この表現も間違いな気がします)は、マニュアルではthunkとなっていた。