問題タブ [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 - Perl と Moose: MooseX::Method の代わりに使用すべき Moose ベースのパッケージ
MooseX::Method
残念なことに、それはもはや維持されておらず、非推奨であることに気付きました。
パッケージMooseX-Method-Signatures
は代替品として宣伝されていますが、ドキュメントには次のように記載されています。これは ALPHA SOFTWARE です。自己責任。機能は変更される場合があります。
<whine>どうしたらいいですか</whine>
perl - PerlとMooseでファクトリをコーディングするにはどうすればよいですか?
Moose
Perlを使用し、受信データに基づいてクラスをインスタンス化するためのより簡単な、またはより良い(=>保守が容易な)方法はありますか?
次のコードは、私が取り組んでいるプロジェクトから抜粋したサンプルです。
編集:これは、DBIを呼び出すときに発生することとほぼ同じであることに気づきました。渡すパラメータに応じて、(ほとんど)一貫性のあるインターフェイスを維持しながら、まったく異なるコードを使用します
perl - Mooseのコンストラクタでのみ設定できる属性を作成することは可能ですか?
Mooseのコンストラクタでのみ設定できる属性を作成することは可能ですか? 私はこのようなことをしたいと思います:
コンストラクターで設定できない属性を作成できることはわかっていますが、補完的なケースが欠落しているようです。
c++ - OOP用のPerlでのMooseのC++のような使用法
私はムースと遊んでいて、それを感じ取っています。C ++のような純粋仮想関数の例を、Mooseの用語で(具体的にはC ++のように)例を挙げてください。SUPER::
Mooseが通常のPerlよりも厳密なモデルを課している場合でも、(メソッド修飾子または呼び出しを介して)私が求めていることを実行する方法はまだ複数あります。そのため、可能な限りC++に似た実装を具体的に求めています。「なんで?」この制限の?主に好奇心がありますが、C++中心の人々がほとんど識別できる方法でMooseを使用してC++コードをPerlに移植することも計画しています。
perl - Moose オブジェクトをモックするにはどうすればよいですか?
Perl の人々は、型制約属性として他の Moose オブジェクトに注入する Moose オブジェクトをモックするときに、どのような戦略を使用しましたか?
Test::MockObject::Extendsは Moose でうまく動作しないようです。ただし、オブジェクトを特定のパッケージとして祝福する必要があるため、バニラの Test::MockObject は機能しません。他の人も同じように苦労したことがあると思います。どのように解決しましたか?
すでに CPAN にあるソリューションの追加ポイント。
perl - MooseX :: Declareを使用してBUILDARGSメソッドを作成する適切な方法は何ですか?
BUILDARGSを呼び出すときに、MooseX::Declareを正しく使用できません。
ファイルのインターフェイスとしてオブジェクトを作成しようとしています。(具体的には、ファイル内の次の数バイトを確認し、さらに処理するためにそれらを切り落とすことができるバイナリファイルへのインターフェイスが必要です。)
このようなオブジェクトの1つを作成できるようにしたい
そして、このように使用します
私のbinary_file_bufferクラスの定義/宣言は次のようになります
(ここに含めなかったコードのバッファーのロードと管理があります。これはかなり簡単です。)
method
問題は、BUILDARGS
宣言でキーワードを使用していることです。したがって、MooseX :: Declareは、の最初の引数としてbinary_file_buffer
オブジェクトBUILDARGS
を想定しています。ただしBUILDARGS
、引数はnewに渡されるため、最初の引数は文字列a'binary_file_buffer'
であり、パッケージの名前です。その結果、最初のコードスニペットで行ったように、newを使用してオブジェクトを作成すると、型チェックに失敗して終了します。(少なくとも、それが何が起こっているのかについての私の理解です。)
私が受け取るエラーメッセージは次のとおりです。
キーワードが$file_nameに提供する型チェックシュガーが好きですが、技術的にはメソッドではないmethod
ため、取得方法がわかりません。BUILDARGS
MooseX :: Declareには、$self
作成をスキップする方法などがありますか?
私はこれを適切なMooseX::Declareの方法で行っていますか?それとも私は何かが足りないのですか?
performance - 非永続的なCGIプロセスでMooseのパフォーマンスを向上させるにはどうすればよいですか?
Mooseは素晴らしいオブジェクトフレームワークです。問題は、その依存関係と合わせて、それが非常に大きいことです。私たちのプロファイリングは、私たちのプラットフォームでは、Mooseをロードするだけで非永続的なCGIアプリケーションスクリプトに5〜6秒のオーバーヘッドが発生することを示しています。これは、これらの1回限りのアプリケーションには受け入れられません。
対照的に、永続的なプロセスシステム(FCGIなど)を使用している場合、この起動オーバーヘッドは排除され(つまり、一度だけ発生します)、すべてが順調です。私たちが抱えている問題は、すべてのコードが常に永続的なプロセスで実行されることを保証できないことです。
Mooseの機能が制限されたドロップイン置換としてMouseを使用することを調査しましたが、(この回答で述べたように)それは実行可能なオプションではないことが判明しました。Mooseで動作するように作成したライブラリは、微妙ではありますが重要な方法でMouseで動作しません。また、永続的な環境でMooseと「バニラ」CGI用のMouseの両方をサポートできるように、すべてのモジュールをフォークする必要はありません。
そのため、次のオプションがあります。
- 必要に応じて、社内モジュールをフォークしてMooseまたはMouseのいずれかで動作します。(うん!)
- FCGI/Moose用のモジュールのみを開発してください。「バニラ」CGIはもうサポートしていません。永続的でないスクリプトを作成する必要がある場合、社内モジュールを活用することはできません。
- MooseまたはMouseのどちらも使用しないでください。ただし、他のオブジェクトフレームワークを使用してください。
どのオプションが最適ですか?現在、2に傾いています。バニラCGIとして何かを実行する必要がある場合は、それを吸い上げます。他のフレームワークはどうですか?私たちが見なければならないもっと軽量なものはありますか?
perl - Moose では、設定された属性をいつでも変更するにはどうすればよいですか?
設定するたびに変更する必要がある属性がある場合、この例で行われているように、アクセサーを自分で記述し、のコンテンツを直接いじる以外に、これを行う巧妙な方法はあり$self
ますか?
を検討trigger
しましたが、同様のアプローチが必要なようでした。
Moose$self
で考えられる悪い習慣でハッシュ参照を直接操作していますか、それとも問題がないことを心配していますか?
perl - Mooseでクラス変数を浮動小数点として宣言するにはどうすればよいですか?
Mooseでクラス変数を浮動小数点として宣言するにはどうすればよいですか?
以下の私の(架空の)サンプルは、「Real」、「Number」などのエラーを生成します...「Str」は機能しますが、目的を達成できません..検索/ Googleは、正しい検索用語をヒットできないため、役に立ちません。 。
PROBLEM.pm
main.pl