gpt4 book ai didi

Perl Class::Accessor 失败,简单的例子 - 为什么?

转载 作者:行者123 更新时间:2023-12-04 16:56:35 25 4
gpt4 key购买 nike

有人能告诉我为什么在这个非常小而微不足道的例子中主要找不到 Class::Accessor 生成的方法吗?

这几行代码失败了

perl codesnippets/accessor.pl
Can't locate object method "color" via package "Critter" at
codesnippets/accessor.pl line 6.

看代码:
#!/opt/local/bin/perl
# The whole Class::Accessor thing does not work !!

my $a = Critter->new;
$a->color("blue");
$a->display;
exit 0;

package Critter;
use base qw(Class::Accessor );
Critter->mk_accessors ("color" );

sub display {
my $self = shift;
print "i am a $self->color " . ref($self) . ", whatever this word means\n";
}

最佳答案

你的代码有问题。如果你想要 color访问器可用,您需要调用 mk_accessors 之前 你创建你的对象并开始用它做事。例如:

package Critter;
use base qw(Class::Accessor);
Critter->mk_accessors("color");

sub display {
my $self = shift;
print $self->color, ' ', ref($self), "\n";
}

package main;
my $c = Critter->new;
$c->color("blue");
$c->display;

更常见的是 Critter代码将在它自己的模块中( Critter.pm ),所有的 mk_accessor当你的主脚本运行 use Critter 时,魔法就会发生-- 在你的脚本开始使用 Critter 之前和 Varmint对象。

关于Perl Class::Accessor 失败,简单的例子 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com