base
とおおよそ同じことをするparent
という名前の新しいプラグマがあるようです。 parent
は、新しい(非コア)モジュールを保証するものは何ですか?私は何かを欠いている?Perl 5の親と基底の違いは何ですか?
43
A
答えて
47
base
は、あまりにも多くのことをしようとしました—は、読み込みモジュールを自動的に処理するだけでなく、既に読み込まれたクラス(おそらくモジュール名に基づいていないファイルから)から継承を確立することもできます。それを動作させるようにするために、場合によっては驚くべき結果を引き起こすハッカーがいくつかありました。下位互換性を破る代わりに、新しい置換プラグマparent
が導入され、よりクリーンなセマンティクスが導入されました。
parent
は、5.10.1のコアモジュールになります。
更新:parent
は行いません。これは、(あなたがfields
プラグマを使用している場合)base
はfields
を処理することを忘れてしまいました。
34
ysthからの情報の余分なビットを武器に、私はドキュメントの違いを見ることができた:
base
プラグマは、次のことを行います
- は
@ISA
にという名前のパッケージを追加します
require
を使用して、指定されたパッケージと同じ名前のモジュールをロードします(既にパッケージがロードされていることが検出されない限り)- は、
$VERSION
場合 - という名前のパッケージに存在しませんという名前のパッケージにはシンボルが存在しない場合に電子パッケージと同じ名前が
- ダイを存在しない、ベースは
- はという名前のパッケージの
fields
初期化"-1, set by base.pm"
に設定します :彼らが存在する場合 - は
parent
プラグマは、次のことを行いという名前のパッケージ
のインポート機能を呼び出すことはありません。
- は
require
- を使用して、指定されたパッケージは、パッケージと同じ名前のモジュールが」doesnの場合は死ぬことはないことを伝えるオプションを受け入れると同じ名前のモジュールをロード
@ISA
- にという名前のパッケージを追加しますt存在する
+4
ほぼと比較してください。 norequireオプションはrequireをしないように指示するだけです(クラスが既にロードされている必要があります)。つまり、エラーをトラップする必要がなく、抑止するかどうかを決める必要はありません。 – ysth
関連する問題
- 1. Groovyの1..5、[* 1..5]と[1..5]の違いは何ですか? Groovyで
- 2. Strawberry Perlでは、perl \ libとperl \ site \ libの違いは何ですか?
- 3. perlでは、$ DB :: single = 1と2の違いは何ですか?
- 4. Perlでのハッシュとハッシュリファレンスの違いは何ですか?
- 5. 回帰におけるローカルとグローバルの基底関数の違いは何ですか?
- 6. アレルグローグラフと5列のmysqlテーブルの違いは何ですか?
- 7. perlのファーストクラスエンティティとセカンドクラスエンティティの違いは何ですか?
- 8. perl -dのxとpの違いは何ですか?
- 9. Perlで `use base`と@ISAの違いは何ですか?
- 10. 5 $/moウェブと20 $/moウェブの違いは何ですか?
- 11. JCreator 4.5とJCreator 5の違いは何ですか?
- 12. appengineデータストアタイムアウトエラー5と11の違いは何ですか?
- 13. python抽象基底クラス、mixinと抽象メソッドの違い
- 14. CGIからPerlへのsendmailの違いは何ですか?
- 15. "||"の違いは何ですか? Perlでは "or"?
- 16. Perlでのパラメータ入力メカニズムの違いは何ですか?
- 17. 直接親ではない基底クラスからコンストラクタを継承する方法
- 18. jobconfとjobの基本的な違いは何ですか?
- 19. setとdidSetの基本的な違いは何ですか?
- 20. バケットソートと基数ソートの違いは何ですか?
- 21. ToString()とConvert.ToString()の基本的な違いは何ですか?
- 22. perlモジュールのインストールとフォルダ全体のコピーとの違いは何ですか?
- 23. 5 Magical Recordのセットアップ方法の違いは何ですか?
- 24. Perlでは、モジュールのロードにuseとrequireの違いは何ですか?
- 25. オブジェクト指向Perlのパッケージ、モジュール、クラスの違いは何ですか?
- 26. Perl CGIとCatalystの違いとパフォーマンスの特徴は何ですか?
- 27. HTML 5の主な違いは何ですか?
- 28. Perlの正規表現で\ 1と$ 1の違いは何ですか?
- 29. Perlでの語彙スコープと動的スコープの違いは何ですか?
- 30. Perlの(、、)と(||、&&)の短絡演算子の違いは何ですか?
また、perl -wE'sayを必要とするベースを 'perl -wE'sayに必要な親' – ysth