問題タブ [moo]
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 - Moo、怠惰な属性、およびデフォルト/強制呼び出し
私のMooベースのクラスには、両方default
とcoerce
サブを持つレイジー属性と非レイジー属性の両方があります。属性を初期化しないと、default
とsubsの両方が通常の属性に対して呼び出されますが、怠惰な属性に対してcoerce
のみ呼び出されます。default
それは矛盾しているようです。サンプルコードは次のとおりです。
出力は次のとおりです。
coerce
コンストラクターで値を指定した場合にのみ実行されることを期待しています。さらに重要なことに、レイジー属性と通常の属性の両方から同じ実行シーケンス(またはと)が期待さdefault
れます。default
coerce
それで、私の期待は外れていますか、これはバグですか、それとも何ですか?ありがとう!
perl - Mooseishの方法で2つの依存属性を宣言する方法は?
私のオブジェクトコンストラクターには、2つの属性を同時に初期化するステートメントがありました。
だから私はトークンを手に入れました、そしてそれは1つのステートメントで一緒に始まります。
ここで、Moo(se)を使用するようにモジュールを移植しようとしましたが、これら2つのバインドされた属性を同時に設定する方法がわかりません。いくつかの擬似コードは次のようになります。
しかし、Moo(se)ishの方法で2つのバインドされた属性を宣言するにはどうすればよいですか?
編集。私はメソッドのコードを示します_get_authorized_token
、多分それはいくつかのアイデアをもたらすでしょう:
perl - Perl ORM と Moo
(リレーショナル データベースを使用する) アプリのオブジェクト指向アプローチとして Moo を使用したいと考えています。過去にDBIx::ClassとRose::DB::Objectを使用していましたが、これらのディストリビューションは Moo (または Moose) に関連していません。Moo と統合された ORM (または類似のもの) を探しています。
perl - Moose では、ロールがデフォルトで属性を定義している場合、消費するクラスでそのデフォルトを変更するにはどうすればよいですか?
私の Moose クラスは、変更が許可されていないロールを使用しています。そのロールは、デフォルトで属性を定義します。クラスにその属性が必要ですが、デフォルトが異なります。
それは可能ですか?
私が思いついたのは、次のように、「新しい」メソッドを独自のコードで囲むことだけです。
しかし、周囲の new が有効かどうかはわかりません。また、よりエレガントなものを望んでいました。
perl - PerlMooのセッター/ライターに複数の引数を渡す方法
私はいくつかのPerlモジュールをMooに移行し始めましたが、セッター/ライターが1つの引数しか持てないために行き詰まりました(そうではありませんか?)。これは強制にも当てはまります。
簡単な使用例を次に示します。
複数の引数を使用した設定をサポートするアクセサーを実装する簡単な方法はありますか?
perl - Dancer でオブジェクトをインスタンス化して、表示する値を返すことはできますか?
Dancer アプリ モジュールに次のコードがあります。
Dice.pm という名前の Moops クラスがあり、.pl ファイルでテストすると問題なく動作しますが、Web ブラウザからアクセスしようとすると、次のエラーが表示されます:オブジェクト メソッド "new" が見つかりませんパッケージ "Dice" 経由 (おそらく "Dice" をロードするのを忘れていませんか?) .
ダンサーでこれを行うことはできますか?
Dice.pm の関連コードは次のとおりです。
perl - Moo: ロールをリロードしようとしましたが中止されました
多数の (スタンドアロン) モジュールを使用するモジュールがあり、それらのモジュールはすべて同じ属性 (ローカリゼーション オブジェクトへのハンドル) を持っています。その属性をすべてのクラスに追加する代わりに、その属性を Role に移動しました。これは、すべての最上位クラスによって使用されます。
残念ながら、致命的なエラー「'Role' を再ロードしようとすると中止されました」+「モジュール/ランタイム行 317 でコンパイルに失敗しました」が表示されます。
すべてのクラスでロールを複数回使用していないことを二重および三重にチェックしましたが、問題を攻撃してエラーを見つける方法に少し困惑しています。これは非常に早い段階 (BEGIN の前) に失敗するため、(私が知っている) デバッグする方法があります。
Moo のクラス階層とコンシュームは、基本的に次のようになります (すべてを投稿するにはコードが多すぎますが、それでも多すぎます)。
メインクラス:
役割:
スタンドアロン クラスの最初のレベル:
サブクラスから第 2 レベルのクラス:
メインクラスを使用しようとすると、次のエラーが発生します。
Foo/SwitchInfo.pm の先頭は次のとおりです (行番号付き):
そして、完全なロールは次のようになります。
小さなテスト スクリプトで、複数のクラスで Role を使用し、それらのクラスを別のクラスで使用しても問題がないことが確認されました。
この長い投稿をまだ読んでいる人がいたら、何か問題を見つけますか? それとも、ロールのこの使用は想定された使用ですか? これは Role を使用する最初の (実際の) 試みであるため、ここで限界を超えている可能性があります。