私は1つの名前空間で次のように言っていますshapes
:
(derive ::rect ::shape)
(derive ::square ::rect)
shapes
名前空間で次を実行します。
(isa? ::square ::shape)
戻りますtrue
。しかし、実際に描画用のマルチメソッドを実装している名前空間で次を実行すると、
(isa? ::square ::shape)
戻りますfalse
。そのため、正しいマルチメソッド ディスパッチ関数が配置されていても、「ディスパッチ関数が見つかりません」というエラーが表示されます。
何か不足していますか?すべてのタイプのシェイプを 1 つの巨大な名前空間に実装することは、私には無意味に思えます。