問題タブ [moose]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - MooseX::Storage が一部のオブジェクトの属性特性に従わないように見えるのはなぜですか?
私の問題を実証するために、小さなテストケースをまとめました。
これにより、オブジェクトが出力されると予想されますが、P2 パッケージの「lol」属性は出力されません。ただし、これは次の結果でも確認できます$stored->pack
MooseX::Storage を間違って使用していますか、それともバグのある動作のように見えますか?
perl - ムースかメタか?
私はこれをいくつかの方法で実行しようとしましたが、どれも十分に優雅に見えません。(CPAN や Moose が既にこれを持っているかどうかも疑問に思っています。私が時間をかけて行った数十回の検索では、完全に一致するものは何も示されていません。)
クラスのタイプを作成したい
- 自分自身を宛先タイプとしてロードする他のクラスの Base + Facade + Factory です。
- 「工場」は公正
Base->new( %params )
であり、これは個々のサブクラスによって登録されたポリシーに基づいてタイプを作成します。 - 各サブクラスは Base クラスのドメインに関する基本的なことを知っていますが、私はそれを最小限に抑えようとしています。以下の例を参照してください
UnresolvedPath
。最初に存在を確認する必要があることを知っているだけです。
この明白な例は、ファイル システムのディレクトリとファイルです。
- 質問: Moose はこれに対して適切な解決策を提供しますか? または、バルクのために Class::MOP に入る必要がありますか?
perl - Mooseでサブタイプをどのように作成しますか?
Mooseを使い始めたばかりです。
単純な通知オブジェクトを作成していますが、入力が「Eメール」タイプであることを確認したいと思います。(今のところ、単純な正規表現の一致は無視してください)。
ドキュメントから、次のコードのように見えるはずだと思います。
しかし、次のエラーが発生します。
MooseでカスタムEメールサブタイプを作成する方法を知っている人はいますか?
Moose-バージョン:0.72 perl-バージョン:5.10.0、プラットフォーム:linux-ubuntu 8.10
perl - Perl 5 OO または Moose を最初に学習する必要がありますか?
私はまだ Perl プログラミングに比較的慣れていませんが、Perl 5 OO が基本的にどのように機能するかは知っています。しかし、私は Perl 5 OO でプロジェクトを作成したことがないので、多くの落とし穴に突き当たることは間違いありません。
最近、 Mooseモジュールに関する誇大広告を発見しました。CPAN に関するいくつかのドキュメントを調べたところ、非常に興味深く、開発者として大いに役立っていることがわかりました。さらに、非常に安定していて信頼できるようです。
基本的な Perl 5 OO 構文に慣れるまで (ステージの背後で何が起こっているかを知るために) 作業を強化する必要がありますか?それとも、Moose を使用してアプリケーションの開発を直接開始する必要があると思いますか? または、マウスを試してみるべきですか?
それに関する考えや経験は大歓迎です。
前もって感謝します!
perl - Mooseでクラス属性を作成する最良の方法は何ですか?
Moose でクラス属性が必要です。今、私はこう言っています:
perl - Moose での多重継承コンストラクターの扱い
ご挨拶、
I'm learning Moose and I'm trying to write a CGI::Application subclass with Moose, which is made difficult by the fact that CGI-App is not based on Moose.
In my other CGI-App subclasses, I like to have a parent class with a setup
method that looks at the child class's symbol table and automatically sets up the runmodes. I figure I can use Moose's metaclass facilities to achieve the same thing in a cleaner way. So here is what I have in my parent class:
...and in my child class:
I realized that the reason my runmodes were not getting setup properly is because setup
is called by the CGI-App constructor, and Moose::Object
is sticking its own constructor in my class. I tried to solve this with a method modifier:
This gives me
しかし、私はこれを完全に間違った方法で行っていると感じています. Moose には、私がまだ発見していない、私が望むものを達成するためのはるかに優れた機能があります.
perl - MooseX::Declare でインライン コンストラクタをオフにする
ご挨拶、
Moose に関する以前の質問の補足として、新しい問題に遭遇しました。Moose 以外の親クラスを拡張するためにRecipe 12を使用する Moose クラスがあります。ここにあります:
これはうまくいきます。を使用するこのクラスのサブクラスもありますMooseX::Declare
。ただし、デフォルトの Moose コンストラクターをオーバーライドしているため、サブクラスは次の警告を発します。
MooseX::Declare
バックグラウンドで自動的に呼び出すため、パラメーターmake_immutable
をオンにする方法を理解できませんでした。inline_constructor => 0
perl - Mooseでは役割と特性はどのように異なりますか?
また、ロールを使用してMooseに実装されるクラスとインターフェイスのセットを作成しました。私が理解するのに苦労しているのは、Mooseの特性と役割の使用法と実装の両方の正確な違いです。
Mooseのドキュメントには次のように記載されています。
役割と特性は同じものであることを理解することが重要です。ロールはトレイトとして使用でき、トレイトはロールです。この2つを区別する唯一の点は、Mooseが短い名前をクラス名に解決できるようにトレイトがパッケージ化されていることです。つまり、トレイトを使用すると、呼び出し元は「Big」のような短い名前でそれを参照でき、MooseはそれをMooseX :: Embiggen :: Meta :: Attribute :: Role::Bigのようなクラスに解決します。
特性と役割は「同じ」であると私は理解しています。ただし、use Moose -traits 'Foo'
構文を使用してアイデアの基本的なテストを実装すると、私が期待することを実行できないようです。確かに私はここで何かが欠けているに違いありません。
この最初の例は、「オブジェクトメソッド'foo'が見つかりません」で失敗します
これと比較して(これは機能します):
perl - クラスが MooseX::Declare で複数のロールを使用していることを宣言するにはどうすればよいですか?
ロール Fooable と Barable の両方が定義されていることを考えると、クラス FooBar が Fooable と Barable を実行するとどのように言えますか? 言っても問題ない
しかし、追加しようとすると
役に立たないエラーが発生します
私が頭がおかしくないことを証明するために、Moose を使って書き直しました。このコードは機能します (しかし、sin よりは醜いです):
perl - MooseX::DeclareでBUILDメソッドを作成する適切な方法は何ですか?
MooseX::DeclareBUILD
のメソッドに問題があります。私が言うなら:
次のような役に立たないエラー メッセージが表示されます。
しかし、私が言うなら:
すべてが正常に動作します (ただし、コードの残りの部分では醜く、場違いです)。