問題タブ [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.

0 投票する
2 に答える
689 参照

perl - Apache::Session と CODE 参照を使用して Moose オブジェクトを格納する代替手段

Apache::Session::File を使用して保存したい Moose クラスがあります。

ただし、デフォルトではApache::Session::Fileはそれを保存せず、代わりにエラーメッセージが表示されます:

この問題は、次のように設定することで回避できます。

CODE 参照をシリアライズできるようにするため。

Moose クラスの問題のあるメソッドを以下に示します。これは、mysql データベースから列を取得します。

したがって、おそらく dbh オブジェクト (DBIx::Connector など) には CODE 参照が含まれています。

$Storable::Deparse と $Storable::Eval を設定するよりも、この Moose クラスのシリアル化を許可するためのより良い代替手段はありますか?

次のテスト スクリプトでは、エラーが発生します。

SQL 接続クラスは次のように定義されます。

TestCell クラスは次のように定義されます。

0 投票する
3 に答える
3043 参照

perl - ムースは本当にこれほど遅いですか?

最近Mooseをダウンロードしました。実験的に、Mooseの既存のモジュールを書き直しました。繰り返しの多いコードを書かないようにするのに便利な方法のようです。モジュールのテストを実行しましたが、少し遅れていることに気づきました。-d:DProfを使用してコードをプロファイリングしましたが、この行を含めるだけのようです。

コード内では、実行時間が約0.25秒増加します(私のコンピューターでは)。これは典型的なことですか?私は何か間違ったことをしていますか、それを誤ってインストールしましたか、それともこれだけの遅延を本当に期待する必要がありますか?

0 投票する
3 に答える
401 参照

perl - Moose サブルーチンでは、$meta はどのようにして @_ に入りますか?

chromatic の最近のブログで Moose サブルーチンに興味を持ちましたhashasMoose のソース コードを調べていたところ、サブルーチン内に$metaから展開された変数があることに気付きました@_。どこ$metaから来たの?Moose と Class::MOP のさまざまなモジュールを調べ始めました。多くのサブルーチンでは、引数として特に渡されていなくても、$metaの最初の引数としてよく見られるようです。@_

has編集:サブルーチンの元のソース コードは次のとおりです。

0 投票する
1 に答える
1333 参照

perl - 別のMooseオブジェクトからMooseオブジェクトをインスタンス化する正しい方法は?

別のMooseオブジェクトからインスタンスを作成する正しい方法は何ですか?実際には、これがさまざまな方法で行われるのを見てきました。

そして、あなたが特徴を持っている場合はどうなりますか?それをサポートする透過的な方法はありますか?これらのいずれかが匿名クラスで機能しますか?

0 投票する
2 に答える
2537 参照

perl - Moose オブジェクトのビルダー サブルーチンの引数

現在、基本クラスの 1 つを拡張するすべてのオブジェクトにビルダー メソッドを委譲しています。私が直面している問題は、すべてのオブジェクトがそれ自体の属性を読み取るか、値で渡される必要があることです。

これは現在可能ですか、それとも他の方法で行う必要がありますか?

0 投票する
3 に答える
2692 参照

perl - Catalyst で使用するために Moose オブジェクトを JSON に変換するにはどうすればよいですか?

Catalyst::View::JSONを介してJSON::XSにフィードしようとしている一連の Moose オブジェクトがあります。JSON::XS は、祝福されたデータ構造をエンコードできません。MooseX::Storage::Format::JSONがあることを私は知っています。しかし、それはかなり重すぎるようです。私が探しているのは、本質的にXXX.pmが提供するものと同じ情報です。生データ構造を再帰的に unbless して、(内部で使用するドライバー) が表示できるようにしたいだけです。JSON::XSJSON::AnyC:V:JSON

オブジェクトを使用Catalyst::View::JSONJSON::XSて使用するための最良の方法は何ですか? Moose私には4つの明らかな選択肢があるようです:

  1. 公開された引数が Moose オブジェクトである場合、リクエストを読み取ってファイナライズするようにパッチを適用することにより、Moose オブジェクトを操作しCatalyst::View::JSONます。C:V:JSONfreeze
  2. JSON::XSの戻り値へのフォールバックにパッチを適用します$obj->freeze if $obj->isa('Moose') && $obj->does('MooseX::Storage::Format::JSON')。および proxy によってMX:S:F:JSON使用されるクラスが(使用するために呼び出されるMoose オブジェクトに対して別の内部エンコーダーを選択した場合に大量のバグが発生することを考えるのは嫌です。JSON::AnyMX:S:F:JSONJSON::XSJSON::AnyJSON::XS
  3. 再帰的に unbless する方法を見つけて、Catalyst::View::JSONそのことをやらせてください。
  4. 絶対に使わないCatalyst::View::JSONでください。STDOUT$obj->freezeに書き込み、手動でリクエストをファイナライズするだけです。これは最もハックなようです。

他にもいくつかのオプションがあると思いますが、アイデアはありますか?私の最善の策は何ですか?

0 投票する
3 に答える
1272 参照

perl - 多くの Moose ベースのサブクラスで属性をオーバーライドする最も効率的な方法は何ですか?

HTML::FormHandlerを使用しています。field_name_spaceそれを使用するには、それからサブクラス化することを想定しており、 orなどのいくつかの属性をオーバーライドできますattribute_name_space

ただし、現在、すべてが拡張されているフォーム、HTML::FormHandlerまたはその DBIC ベースのバリアントHTML::FormHandler::Model::DBICが多数あるため、これらのオーバーライドされた属性が何度も繰り返されています。

それらをロールに入れようとしましたが、+attrロールでは表記がサポートされていないというエラーが表示されます。けっこうだ。

この繰り返しをなくす最善の方法は何ですか? おそらくサブクラス化を考えましたが、 と に対して 2 回実行する必要がありますHTML::FormHandlerHTML::FormHandler::Model::DBICさらに、サブクラス化は通常、代わりに Roles を使用したほうがよいというのが一般的な考えだと思います。

更新:例を挙げるのは良い考えだと思いました。これは私が現在行っていることであり、コードの繰り返しが含まれます。ご覧のとおり、1 つのフォームが別の親クラスを使用しているため、属性オーバーライドを入れるために 1 つの親クラスを作成することはできません。2 つ作成する必要があり、冗長性も追加されます。

0 投票する
2 に答える
125 参照

perl - クラス/パッケージ/モジュールにどのように名前を付けますか

ロールを適用できるように別のモジュールを拡張することだけを目的としているパッケージに、どのように名前を付けますか? (サブクラス) Template::ContextMooseで拡張するパッケージが必要なので、それに適用する役割と特性を作成できますが、このパッケージ (クラス) の名前がわかりません。何かアドバイス?

0 投票する
2 に答える
196 参照

perl - around メソッド修飾子に変数を渡す

around MethodModierへの複数の呼び出し間で変数を渡すことは可能ですか? 例 (それは機能しませんが、うまくいけば私がやりたいことを伝えます)

最終的には、これらの「周り」をプラグ可能なトレイトに配置したいと考えています。事前にどのトレイトがロードされているかはわかりませんが、最終的な出力はきれいにフォーマットされます。

私がこれについて完全に間違っていると考えている可能性があるので、他の提案を歓迎します。

0 投票する
3 に答える
150 参照

perl - トレイトの一部としてロードされたメソッド修飾子を注文できますか?

これは前の質問へのフォローアップです。修飾子を含む複数のプラグイン/特性がaroundある場合、特定の実行順序を保証することは可能ですか (どれが実際にロードされるかがわからないため)? それとも、私が書いたコードとドキュメントでのみそれを制御できますか?

例: それぞれに を持つ 3 つのロールがありaround、それぞれをオプションで特性としてロードできます、複数のロールをロードする場合、正しく連携するには特定の順序でロードする必要があります。たとえば、Trait ABC をこの順序でロードすると正常に動作しますが、Trait BAC のようにロードすると、不安定な動作が発生します。

ユーザー (プログラマー) が間違った順序でロードするのを防ぐ方法はありますか?