yok*_*oko 0 perl attributes self shift
我尝试在perl脚本中创建一个对象.因此我有一个构造函数
new(;@)
{
my $class = shift;
my $self = {};
bless $self, $class;
$self->_init(@_);
return $self;
}
Run Code Online (Sandbox Code Playgroud)
和我的_init(;@)功能,初始化对象
my $self = shift;
if( @_ )
{
my %extra = @_;
@$self{keys %extra} = values %extra;
}
return;
Run Code Online (Sandbox Code Playgroud)
我使用这两个功能的方式是错误的吗?我用两条线开始每隔一个子线
my $self = shift;
croak "instance method called for class" unless ref $self;
Run Code Online (Sandbox Code Playgroud)
但是我每次使用它时都会得到syntax/ String found where operator expected错误.
因此我的问题是:我是否正确使用这两种功能?我一直认为我只需要$self像我一样初始化一次,并且可以为脚本的其余部分指出我想要的一切.
croak默认情况下未加载.你必须use Carp在包装中才能使用它(见鲤鱼).
顺便说一下,方法调用会忽略原型.不要使用它们.也不要将它们用于功能.
您可以使用类似Class :: Declare :: Attributes的东西来保存一些输入:
sub new :class {
...
}
Run Code Online (Sandbox Code Playgroud)