マルチメソッド

みずしまくんと話す。

マルチメソッドは、オーバーローディングとは違うことを勉強した!ランタイムの型でメソッドを選択するのがマルチメソッドだそうです。これは、なかなかおもしろい。例えば式の評価を行うeval(Expr e)とかをExprクラスの中に入れてvirtualにしておけばとりあえずはOKだが、これは多少抵抗があったりする。そして、こういうのをマルチメソッドを使えばうまくできる、と。

OOだと、foo(Expr e)とかfoo(int i)とかあったらちょっと型チェックが面倒になりそうですが、できることはできるというのも理解できました。マルチメソッドがあれば、variant typeみたいのをうまく表現できるわけですね。

OOも進化しているのですね。勉強になります。

ついでにVisitorパターンの勉強にもなりました。やっと理解できた。