perl语言,state好像失效了
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/01 13:01:23
perl语言,state好像失效了
use 5.0.10;
use feature 'state';
sub average{
my $sum=0;
foreach(@_){
$sum+=$_;
}
my $average=$sum/@_;
return $average;
}
sub above_average{
my $num=0;
my $average=&average(@_);
my @list=undef;
foreach(@_){
if($_>$average){unshift(@list,$_);}
}
return @list;
}
sub greet{
state $namelast;
state $namenow;
if($namenow==undef){
$namelast=undef;
$namenow=shift(@_);
print "Hi $namenow","!","You are the first one here\n";
}
else{
$namelast=$namenow;
$namenow=shift(@_);
print "Hi $namenow","!","$namelast is also here ";
}
}
greet("Fred");
greet("Barney");
greet("Tom");
结果:
use 5.0.10;
use feature 'state';
sub average{
my $sum=0;
foreach(@_){
$sum+=$_;
}
my $average=$sum/@_;
return $average;
}
sub above_average{
my $num=0;
my $average=&average(@_);
my @list=undef;
foreach(@_){
if($_>$average){unshift(@list,$_);}
}
return @list;
}
sub greet{
state $namelast;
state $namenow;
if($namenow==undef){
$namelast=undef;
$namenow=shift(@_);
print "Hi $namenow","!","You are the first one here\n";
}
else{
$namelast=$namenow;
$namenow=shift(@_);
print "Hi $namenow","!","$namelast is also here ";
}
}
greet("Fred");
greet("Barney");
greet("Tom");
结果:
sub greet{
state $namelast;
state $namenow;
if(! defined $namenow ){ -->这里注意undef不是用等号判断的奥
$namelast=undef;
$namenow=shift(@_);
print "Hi $namenow","! ","You are the first one here\n";
}
else{
$namelast=$namenow;
$namenow=shift(@_);
print "Hi $namenow","! ","$namelast is also here \n";
}
}
再问: 改成$namenow eq undef这样就对了。。perl里面比较字符串的操作符弄错了,我把。。。。
state $namelast;
state $namenow;
if(! defined $namenow ){ -->这里注意undef不是用等号判断的奥
$namelast=undef;
$namenow=shift(@_);
print "Hi $namenow","! ","You are the first one here\n";
}
else{
$namelast=$namenow;
$namenow=shift(@_);
print "Hi $namenow","! ","$namelast is also here \n";
}
}
再问: 改成$namenow eq undef这样就对了。。perl里面比较字符串的操作符弄错了,我把。。。。