有以下课程:
package MyClass;
use strict;
use warnings;
sub new
{
my $class = shift();
my $self = {
_class_member => "default"
};
bless ($self, $class);
return $self;
}
Run Code Online (Sandbox Code Playgroud)
如何设置/获取值_class_member?
我尝试了以下代码:
sub set_name
{
my $self = shift();
$self->_class_member = shift();
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
无法通过包"MyClass"找到对象方法"_class_member"...
我在这做错了什么?
$self是一个有福的哈希.除非您或原作者提供了该方法_class_member,否则没有这样的方法.
但是,你可以"到达"哈希来访问它:
$self->{'_class_member'} = shift;
Run Code Online (Sandbox Code Playgroud)
这不是实例值的推荐做法,因为它同样容易输入:
$self->{'_vlass_member'} = shift;
Run Code Online (Sandbox Code Playgroud)
没有投诉.因此,访问者的价值.