我想创建属于对象(非静态)而不是类的变量。在我的下面的代码中我尝试了一些东西。Perl创建类变量而不是实例变量
#!/usr/bin/perl -w
use Animal;
sub main{
$animal1 = new Animal();
$animal2 = new Animal();
for (my $i=0; $i < 10; $i++) {
$animal1->next_move();
$animal2->next_move();
}
print "\n";
}
main();
我的动物类看起来像这样
#!/usr/bin/perl -w
#
#
# Animal.pl
package Animal;
sub new
{
my $class = shift;
my $self = {
_MOVE => 0,
};
bless $self, $class;
return $self;
}
sub next_move{
$self->{_MOVE}++;
print $self->{_MOVE}." ";
}
1;
我的输出是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
,而我的预期了是
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10
谢谢。我刚开始学习Perl,不知道严格。将从现在开始使用它。 – Ruturaj 2014-11-22 19:47:19
@Ruturaj:你必须在每个Perl程序的开头都使用strict和'warnings'。命令行上的-w选项(或程序文件的shebang行)不是最佳实践。您还需要使用'my'将所有变量声明为尽可能接近它们的第一个使用点。最好使用'++ $ self - > {_ MOVE}'而不是'$ self - > {_ MOVE} ++'。 C++编程语言的名字让每个人都陷入了坏习惯! – Borodin 2014-11-22 22:07:02
我现在使用严格和警告。谢谢。 – Ruturaj 2014-11-22 22:28:39