2006-09-22 (Fri)
_ Visiterパターンとブロック
確かにブロックを持つRubyではVisitorパターンや、Iteratorパターンは もはやパターンとは呼べないレベルだし
[Matzにっき(2006-09-15)より引用]
Visitorパターンの肝は、ダブルディスパッチを使って、visit対象の型による分岐(eval.cみたいなの)をメソッドディスパッチに置き換えるところにあると思うのですが、これってブロックで代替できるんでしょうか。 たんに各ノードを辿るだけならブロックでいいと思うんですが。
Visitorパターンに対応する言語機能はブロックというよりはマルチメソッドじゃないのかなあ。 Iteratorパターンを使いたくないような時に、Visitorパターンはよく使う ので気になるところ。
_ まつもと [Visitorパターンについては走査についてだけ考えてました。 ダブルディスパッチの部分はRubyならHashとPr..]
_ shugo [HashとProcを使うよりは、Visitorパターンの方が好みですねえ。 たんにダブルディスパッチが好きなだけかも..]
_ まつもと [Visitorパターンのダブルディスパッチはデフォルト値とか書けないんで面倒なんですよね。 この辺を積極的に支援する..]
_ shugo [そこでmethod_missingですよ(ウソ)]