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;

毫无怨言。因此accessors的价值。

于 2013-05-08T14:18:38.873 回答