パッケージの最後に1を忘れた場合、Perlは "パッケージが本当の値を返さなかった"と伝えます。あなたがそれを忘れていることが分かったら、あなたのためにそれを置くのはなぜですか?各perlパッケージの最後に1つの理由はありますか?
答えて
require
ディレクティブが成功する必要がある(true値が返される)か、失敗する(false valueが返された場合、Perlモジュールは信号に値を返す必要があるため、何らかの理由でモジュールが初期化できなかった場合に意味があります)。
何も返さない場合は、require
が成功するか失敗するかを通訳者は知ることができません。同時に、パッケージの最後に真の値を入れることを忘れやすいので、このエラーの「共通の修正」を提案します。真の値を戻り値として追加します。
モジュールの戻り値の他の情報/フォークロアについては、this questionをご覧ください。
もしあなたがそこに置くのを忘れてしまったら、初期化に失敗したことを知らせる必要はないでしょうか?それは非常に特殊なケースであるように思われるので、成功しないチャンスがあると言っていない限り、成功すると安全に仮定できませんか? –
@Chris:私たちは何がより良いかより論理的であるかについて議論することができますが、言語はこのように設計されています。 ':)'(個人的には、戻り値が要求されればそれを指定する必要があります) –
@Matteo - Perl 6はまだ "不確定な未来"の段階にあります私は言語の話をすることができると思います。 –
パッケージは、必要なデータファイルや外部ライブラリが見つからないなど、初期化に失敗した場合に偽の値を返すことがあります。このようにして、予期せず後ではなく、ロード時にきれいに失敗します(この障害はテストすることすらできます)。
パッケージは初期化に失敗した場合でもfalse値を返すことができますが、失敗することはできません。それは有用なメッセージで死ぬ方が良いでしょう。 – ikegami
1;
When a module is loaded (via use) the compiler will complain unless the last statement executed when it is loaded is true. This line ensures that this is the case (as long as you don't place any code after this line). It's Perl's way of making sure that it successfully parsed all the way to the end of the file.
はあなたがtrueと評価任意のステートメントを使用することができますhttp://mathforum.org/~ken/perl_modules.html
を参照してください。 1ちょうど起こったperlのイディオムになる。 wikipedia Perl moduleから
:
A Perl module must end with a true value or else it is considered not to
have loaded. By convention this value is usually 1 though it can be
any true value. A module can end with false to indicate failure but
this is rarely used and it would instead die() (exit with an error).
- 1. シバンラインをPerlパッケージに含める理由はありますか?
- 2. パッケージ保護クラスのパブリックメソッドには何らかの理由がありますか?
- 3. 2つのソリューション、1つはNugetパッケージなし、もう1つはNugetパッケージあり
- 4. のperl:> 1パッケージ
- 5. のPerl - 文字列の最後の数字の後に戻り、最後の英字とあまりに
- 6. 最後にbash挿入スペースがありますが、各行の1つの位置に
- 7. Javascriptカンマリストですが、最後に1つがあります
- 8. SQL - 各列には1つの条件があります
- 9. ウェブアセンブリのフィックスアップセクションのサイズは、各セクションの最後にありますか?
- 10. MongoDB - 各会話から最後に1つのメッセージを取得しますか?
- 11. レール内の各フィクスチャファイルに2つのテストフィクスチャがある理由
- 12. Cardview - データの最後まで各要素がペイントされる理由
- 13. ネームサーバの最後に1ドットしか必要ありません。
- 14. C#DateTime各月の最後の1日
- 15. Object.freeze関数に何らかの理由はありますか?
- 16. データフレーム内の各行を作成するには、各列に1つの値がありますか?
- 17. where節に1 = 1を使用する論理的な理由はありますか?
- 18. list [-1:]は最後の値を返しますが、最後の値はありませんか?
- 19. Perl Net :: FTPのエラー理由
- 20. perlの - 何らかの理由でReadKey
- 21. SortedListには2種類の理由がありますか?
- 22. 1つのパッケージに複数のアイコンがありますか? Android - Eclipse開発
- 23. StatelessWidgetの背後にある理由は何ですか?
- 24. 'BanTransitiveDependencies failed'の背後にある理由は何ですか?
- 25. ScriptManager.GetCurrentメソッドの背後にある理由
- 26. C言語用の並行処理パッケージはありますか?
- 27. lVals = [1、08、2011]が例外をスローする理由はありますか?
- 28. 各binmodeの後にポップする必要がありますか?
- 29. 私はテーブルにmodel.pyの各最新のデータがあります。
- 30. このPerlループの中で条件付きで最後に使用するクリーナーはありますか?
あなたが欲しい[真](http://p3rl.org/true)。 – daxim