
regonn&curry.fm - 最新の生成AI動向を週刊でお届け -言語屋さんではないので詳しくは話せないけど、Julia が Class を使わない理由は多重ディスパッチと呼ばれる仕組みを採用しているから。おそらく、Go とか Rust は別の理由(未調査)
多重ディスパッチは関数の全ての引数の型マッチングで対応するメソッドを呼ぶ方法
同じ関数名で複数のメソッドが定義される
オブジェクト一つ一つがメソッドを持っているわけではなく、関数オブジェクトがまとめてメソッドを持っている
似たように多重ディスパッチを採用しているのは Common Lisp
なので、Julia は Ruby や Python のような 純粋オブジェクト指向言語ではないが、疑似的なオブジェクト指向の書き方ができる
多重ディスパッチがあると、クラスがあって、そこにメソッドが属しているという考え方はあまり意味を持たない。collide-with という名前のメソッドは、引数ごとにそれぞれ 2 つのクラスと関連付けられている「普通の関数呼び出し」に過ぎなくなる。結果として、メソッドを呼び出す際の特殊な構文を必要としない。
疑似 OOP
コメントを投稿するにはログインが必要です
ログインページへ