2

次のクラスがあります。

package MyClass;

use strict;
use warnings;

sub new
{
    my $class = shift();
    my $self = {
        _class_member => "default"
};

    bless ($self, $class);
    return $self;
}

の値を設定/取得するにはどうすればよい_class_memberですか?

次のコードを試しました:

sub set_name
{
    my $self = shift();
    $self->_class_member = shift();
}

しかし、次のエラーが表示されます。

パッケージ「MyClass」を介してオブジェクトメソッド「_class_member」が見つかりません...

ここで何が間違っていますか?

4

1 に答える 1

8

$self祝福されたハッシュです。あなたまたは元の作成者がメソッドを提供しない限り、その_class_memberようなメソッドはありません。

ただし、ハッシュに「到達」してアクセスすることはできます。

 $self->{'_class_member'} = shift;

これは、入力が簡単であるため、インスタンス値の推奨される方法ではありません。

$self->{'_vlass_member'} = shift;

苦情なし。したがって、アクセサーの値。

于 2013-05-08T14:18:38.873 に答える