0

抽象基本クラスのすべての子クラスに強制的にインターフェイスを実装しようとしています。ABC に追加しようとするwith '<interface>'と、必要なメソッドをすぐに実装し、sub <method> {}インターフェイス メソッドごとに追加する必要があります。

問題を説明するには、

package drawAPI {
   use MooseX::Interface;
   require 'draw';
   one;
}

package shape {
   use MooseX::ABC;
   with 'drawAPI';
}

package square {
   extends 'shape';
    #here is where having a draw subroutine would be inforced
   sub draw {};
}

これを行う方法を知っている人はいますか?または、これを達成するために別のモジュールのセットを推奨できますか?

ありがとう

4

1 に答える 1

0

MooseX::ABCのドキュメントには、「注: このモジュールはほぼ間違いなく悪い考えです。代わりにロールを使用したいだけです!」と記載されています。MooseX::Interfaceのドキュメントには、「インターフェイスは、いくつかの追加の制限があるロールにすぎません...」と記載されています。モジュールの選択は、Moose を Java のように見せて動作させることを示唆していますが、これは失われた原因です。幸いなことに、Moose Rolesは、探している動作のすべてではないにしても、多くのことをほぼ確実に提供できるということです。さらに、Java には類似していない役割を使用して達成できるいくつかの強力なことに驚くかもしれません。

于 2016-02-24T17:51:33.817 に答える