0

まず、この問題の原因を突き止めるのに非常に苦労しているため、どのくらいの情報を含める必要があるのか​​よくわかりません。

私には、(他のいくつかのこととともに)次のようなクラスの属性を設定しようとするサブルーチンを持つMooseの役割があります。

$genre = Movie::Genre->new({
    genreName => 'Drama',
    genreID => '1'
                 });

問題は、そうではないということです。$genre直後のダンプは、まだ空であることを示しています。

$genre: bless( {}, 'Movie::Genre' )

見知らぬ人でも、テストファイルでまったく同じ行を実行すると、このダンプで期待どおりに機能します。

$genre: bless( {
             genreID => '1',
             genreName => 'Drama'
           }, 'Movie::Genre' )

これらの2行のコードが異なる理由を見つけるのに苦労しており、1つは機能し、もう1つは失敗します。

最初の例が失敗し、2番目の例が成功する原因となる条件についてのアイデアはありますか?必要に応じて、より多くのコンテキストを提供させていただきます。ありがとう!

4

1 に答える 1

2

その行は、これらのパラメーターをMovie::Genreコンストラクターに渡すだけです。それらをどうするかを決めるのはそのコンストラクター次第です。

Movie :: GenreクラスがgenreNameandという名前の属性を取得する前に、(ロール内の)呼び出しが実行されているようgenreIDです。デフォルトでは、Mooseコンストラクターは認識しないパラメーターを無視するため、警告は生成されません。

属性がMovie::Genreに追加された後、テストファイルがその呼び出しを行う必要があります。

これが発生している理由を正確に把握するには、コードをさらに確認する必要があります。

于 2010-08-19T00:53:06.337 に答える