私は、私が制御しないクラスにメソッドを追加したいという問題に直面することがよくあります。たとえば、統合されたAPIを持たないさまざまなオブジェクトタイプ(たとえば、__str__
のメソッド)で操作できる関数prettyPrint
が必要な場合があります。ScalaやJythonのマルチメソッドの代わり
Nice
言語とR
は、Visitor Patternをうまく回避しないマルチメソッドを使用してこれを実行します。例えば、R
はplot()
の機能を持っています。個々のプログラマは、データ型(例えば、ネットワークグラフまたは株価データ)を定義するための新しいクラスを作成することができる。セカンダリユーザ/プログラマは、グラフや株式ティッカーコード、または他のプロット関数のコードにアクセスできないにもかかわらず、機能を記入するためのプロット関数を書くことができます。
class.method()
を使用して、後でたくさんの機能を追加したいと考えているため、実行不可能なようです。各タイプのclass_plot()
の機能がたくさんあることも悪い考えです。タイプをチェックする1つの大きいplot()
関数を定義することは拡張可能ではありません。
マルチメソッドの代替手段は何ですか?特に、JythonとScalaで動作するデザインに興味があります。