1

重複の可能性:
有効なPerlモジュールの戻り値は何ですか?

通常1;、モジュールの最後で使用します。これは、モジュールが戻りtrue、正しくインポートできることを示すためです。ここで、 0meansを返すとfalse、モジュールのインポートに失敗することを意味します。

私の質問は、モジュールの最後にある以下のステートメントを使用(または返す)するとどうなるかということです。

  • -1;
  • some text;
  • またabc;

-1エラーを意味some textし、、をabc意味しますtrue

また、1;(上記のように)またはステートメントをまったく使用しない場合、モジュールはその場合に何を返しますか?

戻りundefますか?

4

3 に答える 3

4

真の値は成功を示します。-1 は真の値です。

リターンはファイルの最後にある必要はありません。これは、最後の実行可能ステートメント (つまり、package、use、no、sub、format などのコンパイル時だけのものではない最後のステートメント) の戻り値です。

たとえば、次の内容を含むファイルが必要です。

package foo;
our @x;
sub bar { }

@foo::x が空の場合は失敗し、それ以外の場合は成功します。

実際に実行可能なステートメントがない場合、戻り値は undef (false) と見なされます。

于 2013-01-14T07:27:15.117 に答える
2

サブの場合と同様に、モジュールによって返される値は、最後に評価されたステートメントによって返される値です。ファイルが空の場合はundefだと思います。(それは間違いなく真の値ではありません。)

モジュールは常に真の値(ゼロ、空の文字列、またはundef以外)を返す必要があります。

  • -1本当なので、それは許容できます。
  • some textと同等の間接メソッド呼び出しですtext->some()
    • text->some()(および同等の)メソッドが真の値を返す場合にのみ受け入れられます。安全のために、真の定数でフォローアップします。
  • abcと同等のサブルーチン呼び出しabc()、または。と同等の文字列リテラルのいずれか'abc'です。
    • abc()(および同等の)は、サブルーチンが真の値を返す場合にのみ受け入れられます。安全のために、真の定数でフォローアップします。
    • 'abc'(および同等の)真であるため、それは許容範囲です。

エラーがある場合は、die代わりに。ただし、誰かが例外をキャッチした場合、モジュールが半分ロードされた(半分実行された)ままになるため、妥当な場合はそれでも回避する必要があります。

于 2013-01-14T07:43:37.723 に答える
1

それらは真であり、モジュールはコンパイルされます。ただし、より積極的な診断では、コンパイラが 1 以外の値について警告を発するのを見てきました。実際には、この "1;" です。任意の行に配置できます。私は時々、デバッグ中のコードの途中にそのようなものを入れて、デバッグ用のブレークポイント行を表示します。

多くのプログラムは、最後の行である必要のない最後の式に誤ってさまざまな真の値を持っているため、低い診断レベルでも問題なく実行されます。

$a = "誤って -c を満足させる真の値。";

サブハロー{リターン; }
于 2013-01-14T06:59:43.747 に答える