問題タブ [method-modifier]
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 - around メソッド修飾子に変数を渡す
around
MethodModierへの複数の呼び出し間で変数を渡すことは可能ですか? 例 (それは機能しませんが、うまくいけば私がやりたいことを伝えます)
最終的には、これらの「周り」をプラグ可能なトレイトに配置したいと考えています。事前にどのトレイトがロードされているかはわかりませんが、最終的な出力はきれいにフォーマットされます。
私がこれについて完全に間違っていると考えている可能性があるので、他の提案を歓迎します。
perl - トレイトの一部としてロードされたメソッド修飾子を注文できますか?
これは前の質問へのフォローアップです。修飾子を含む複数のプラグイン/特性がaround
ある場合、特定の実行順序を保証することは可能ですか (どれが実際にロードされるかがわからないため)? それとも、私が書いたコードとドキュメントでのみそれを制御できますか?
例: それぞれに を持つ 3 つのロールがありaround
、それぞれをオプションで特性としてロードできますが、複数のロールをロードする場合、正しく連携するには特定の順序でロードする必要があります。たとえば、Trait ABC をこの順序でロードすると正常に動作しますが、Trait BAC のようにロードすると、不安定な動作が発生します。
ユーザー (プログラマー) が間違った順序でロードするのを防ぐ方法はありますか?
perl - Perl / Mooseで、すべてのサブクラスのメソッドに修飾子を適用するにはどうすればよいですか?
サブクラス化することを目的としたMooseクラスがあり、すべてのサブクラスは「execute」メソッドを実装する必要があります。ただし、すべてのサブクラスのexecuteメソッドに適用されるように、クラスのexecuteメソッドにメソッド修飾子を適用したいと思います。ただし、メソッドがオーバーライドされると、メソッド修飾子は保持されません。クラスのすべてのサブクラスに、実行メソッドにメソッド修飾子が適用されるようにする方法はありますか?
例:スーパークラスでは、次のようになります。
次に、そのサブクラスで:
executeメソッドが呼び出されると、「before」修飾子については何も言われません。
perl - メソッドモディファイア、セッター、コンストラクターの周りをムース(新規):属性へのすべての更新をインターセプトします
アップデート
元の質問に投稿したコードは、メソッド修飾子が機能する方法と機能しない方法を示しています。それは必ずしも私が与えた問題の説明を説明するものではありませんでした。このコードはそうあるべきです。それは機能しますが、すべての更新を追跡し、セッターに提供された値に基づいてそれらに基づいて動作するという要件をコーディングするために使用したトリガーにハックが含まれています。
仕事をするためにどのムース施設を採用すべきかまだわからない。豊富な機能と設備が必ずしも物事を容易にするわけではありません。少なくとも、ホイールを再発明せず、再利用できるものを再利用しようとするときはそうではありません。
元の質問
メソッド修飾子はaround
、オブジェクトの構築の一部として呼び出されていないようです(を呼び出す場合new
)。ここでのテストケース:
私が達成したいことを説明しましょう。quantity
およびprice
(およびさらにいくつかの状態)を持つクラスがあります。数量が入ってくるとき(new
またはセッターを介して、私は気にしません)、それが整数になることを確認したいと思います(したがって制約)。整数でない場合は、それを単に置き換えて1
、元の数量を保存したり、価格に元の数量を掛けたりするなど、オブジェクトに他の更新を加えたいと思います。コンストラクターとセッターの両方。
私は何をすべきか?ジョブを実行するサブルーチンを提供し、との両方から呼び出しaround BUILDARGS
ますaround quantity
か?
perl - Moose Perl: 「すべてのサブクラスで複数のメソッドを変更する」
データベース内のテーブルにマッピングされるさまざまなサブクラスを持つ Moose BaseDBModel があります。サブクラスのすべてのメソッドは、さまざまな DB 操作を参照する「get_xxx」または「update_xxx」のようなものです。
今、私はこれらすべてのメソッドにキャッシュシステムを実装したいので、私のアイデアは「get_xxx」のような名前のすべてのメソッドの「前」にあり、メソッドの名前を memcache プールのキーとして値を検索します。値が見つかった場合は、メソッドではなく値を直接返します。
理想的には、私のコードは次のようになります
BaseDBModel
サブクラスの例 1
今私の問題は、私のプログラムが実行されているときに、メソッドを繰り返し変更していることです。次に例を示します。
アパッチを再起動する
get_character_by_id を呼び出すページにアクセスすると、1 つの警告メッセージが表示されます。
コード:
警告:
しかし、ページを更新すると、2 つの警告メッセージが表示されました
警告:
Apache で mod_perl 2.0 を使用しています。ページを更新するたびに、不要な get_character_by_id メソッドが変更されます。
perl - 基本クラスの Moose メソッド修飾子が呼び出されない
それらをサブクラスに追加したり、役割に混ぜたりできるのは素晴らしいことです。私の問題は、サブクラスがメソッド自体(修飾子ではなく)を再定義すると、基本クラスのメソッド修飾子が非アクティブになるように見えることです。メソッド修飾子の理解が間違っているのかもしれません。例:
最後の出力は の1
ようになると予想していまし$foo
た。私は何を間違っていますか?
perl - Moose および Roles メソッド修飾子
ビルダーメソッドを介して消費クラスに入力される必須属性の Role で after 修飾子を使用することは可能ですか?
消費クラス: