トップ «前の日記(2006-09-21 (Thu)) 最新 次の日記(2006-09-26 (Tue))» 編集   RSS 1.0 FEED  

Journal InTime


2006-09-22 (Fri) [長年日記]

_ [Ruby] Visiterパターンとブロック

確かにブロックを持つRubyではVisitorパターンや、Iteratorパターンは もはやパターンとは呼べないレベルだし

[Matzにっき(2006-09-15)より引用]

Visitorパターンの肝は、ダブルディスパッチを使って、visit対象の型による分岐(eval.cみたいなの)をメソッドディスパッチに置き換えるところにあると思うのですが、これってブロックで代替できるんでしょうか。 たんに各ノードを辿るだけならブロックでいいと思うんですが。

Visitorパターンに対応する言語機能はブロックというよりはマルチメソッドじゃないのかなあ。 Iteratorパターンを使いたくないような時に、Visitorパターンはよく使う ので気になるところ。

本日のツッコミ(全4件) [ツッコミを入れる]
_ まつもと (2006-09-22 (Fri) 10:58)

Visitorパターンについては走査についてだけ考えてました。<br>ダブルディスパッチの部分はRubyならHashとProcを組み合わせるんじゃないでしょうか。

_ shugo (2006-09-22 (Fri) 11:59)

HashとProcを使うよりは、Visitorパターンの方が好みですねえ。<br>たんにダブルディスパッチが好きなだけかもしれないですが。

_ まつもと (2006-09-22 (Fri) 14:07)

Visitorパターンのダブルディスパッチはデフォルト値とか書けないんで面倒なんですよね。<br>この辺を積極的に支援するためにはそれこそマルチメソッドが欲しくなりますね。

_ shugo (2006-09-22 (Fri) 19:04)

そこでmethod_missingですよ(ウソ)