2011-07-12 7 views

答えて

0

$selfundefあるので - ほぼ同等のようになります。

my $self ={}; { $self = bless($self, $pkg); } 

または:あなたはundefをを祝福することはできません

ので:

$self = bless({}, $pkg); 

編集コメントに答えるためにエラーCan't bless non-reference value at ...が表示されます。ハードな参照のみが祝福されるかもしれないからです。これはPerl がオブジェクトのカプセル化を実施する方法です。 perlobj manpageを参照してください。

+0

あなたはvarsが祝福できないことを意味するのですか? – Learning

+0

私は 'undef'がハッシュリファレンスと同じではないことを意味します:) –

+0

なぜ私は最初にそれを祝福して後で初期化できませんか? – Learning

4

%hashの範囲を囲むブロックに限定しようとしていたと思います。次の文で

my $self = bless {}, $pkg; 
1
$hash = {}; 
^^^^^  ^^ 
referrer referent 

:これは、以下のように書き換えることができる

$self = bless($hash, $pkg); 

blessはリファレントマーク(匿名ハッシュ)$hashは($pkgの対象であるものとして、参照しますHTML :: Templateクラス)。変数$hashは変更されません。

bless関数は、祝福された匿名ハッシュへの参照を返します。したがって、$selfは、祝福された匿名ハッシュ(参照先)への参照になります。

bless関数の最初の引数は参照であるならば、それはそれは、ない変数自体恵まれている参照しているものであることを覚えておくことが重要です。

$self = bless($self, $pkg); 

$self doesnの」に何かを参照する - それはundefです。祝福することはありません。これを試すのと同じことです:

$self = bless(undef, $pkg); 

Bless My Referentsは、この主題の素晴らしい紹介です。

関連する問題