問題タブ [moops]
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 - Dancer でオブジェクトをインスタンス化して、表示する値を返すことはできますか?
Dancer アプリ モジュールに次のコードがあります。
Dice.pm という名前の Moops クラスがあり、.pl ファイルでテストすると問題なく動作しますが、Web ブラウザからアクセスしようとすると、次のエラーが表示されます:オブジェクト メソッド "new" が見つかりませんパッケージ "Dice" 経由 (おそらく "Dice" をロードするのを忘れていませんか?) .
ダンサーでこれを行うことはできますか?
Dice.pm の関連コードは次のとおりです。
perl - Moops の class_has
MoopsのようなものはありMooseX::ClassAttribute
ますか?
Moo
バックエンドを持ち込みたくないので、バックエンドを使用して静的/クラス属性が必要であることに注意してくださいMoose
。
perl - Moops lexical_has とデフォルト値
Moopslexical_has
で属性がどのように機能するかを理解しようとしています。この機能はから来ており、私が理解しているように、この関数は、スカラー参照 (に保持されている) を使用して、「字句的に持つ」可能性のある属性への参照を生成できます。次に、CODE 参照を使用して、スコープを「強制」する方法でクラス属性にアクセスできます (それらは「裏返し」であるため??)。しかし、これは単なる私の推測と野生の推測であるため、より良い説明をいただければ幸いです。また、次の例でこのアプローチが機能しないように見える理由も知りたいです。Lexical::Accessor
lexical_has
CODE
class
accessor =>
Moops イントロダクションの一部である例から作業して、次のものを作成していclass Car
ます。
次に、オブジェクトをインスタンス化し、そのメソッドを使用してその属性にアクセスしようとします。
カスタム アクセサーを使用する最後の行には困惑します。何も起こりません。クラスの属性または設定が不足していますか (熱心またはlazy => 0
機能しないとマークされています)。関数が必要BUILD
ですか?私が見逃している初期化ステップはありますか?
注: 次のようなセッター メソッドをクラスに追加すると、次のようになります。
そして、最後の一連のステートメントでそれを呼び出します。
メソッドはget_top_speed()
適切に戻り始めます。これは期待されていますか?もしそうなら、クラス設定のデフォルトはどのように機能しますか?
これをバグとして報告しました: https://rt.cpan.org/Public/Bug/Display.html?id=101024。
「perl 規則」を使用することで (つまりlexical_has
、プライベート属性を使用せず、「 」を前に付けることで)これを簡単に回避でき_
、この質問はバグから生じたものであるため、修正やパッチが回答として期待されていません。Lexical::Accessor
報奨金について - がどのように機能するのかを説明していただければ幸いです。アクセサーにプライベート内部スコープを「強制」する方法。そして、それが良いことである理由についてのCS理論かもしれません。
mocking - ジェネリック トレース モック クラス
moops を使用して便利なモック クラスを構築しようとしています。
これにより、次の結果が得られます。
したがって、問題は、ショートカットを使用するとcaller()
常に返されるようです。m
around m,l ..
クラスを次のように定義します。
動作しますが、もう少し冗長で書きにくいです。
Moops でこのようなことを達成するためのより良いオプションはありますか?