有以下课程:
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”...
我在这里做错了什么?
答案 0 :(得分:8)
$self
是祝福的哈希。除非您或原作者提供方法_class_member
,否则没有这样的方法。
然而,你可以“到达”哈希来访问它:
$self->{'_class_member'} = shift;
这不是实例值的推荐做法,因为它也很容易输入:
$self->{'_vlass_member'} = shift;
没有投诉。因此accessors的价值。