perl语言foreach用法

一个求和公式foreach(@_){$sum=$sum+shift(@_);}print"$sum.\n";怎么运行出来结果不对?... 一个求和公式
foreach (@_)
{
$sum=$sum+shift(@_) ;
}

print "$sum.\n";
怎么运行出来结果不对?
展开
 我来答
慎重还可靠灬宝贝f
2016-01-01 · TA获得超过12.9万个赞
知道大有可为答主
回答量:1.9万
采纳率:52%
帮助的人:2546万
展开全部
  Perl foreach用法
  Perl foreach从列表(数组)的第一个元素一直循环执行到最后一个元素,一次迭代一个。控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为“bedrock”,第三次为“lava”。控制变量不是这些列表元素中的一个拷贝而是这誉辩裂些元素本身。也就是说,如果在循环中修改这个变量,那原始列表中的元素也会被修改,如下面代码段所显示。这条性质是有用的,但是,如果不清楚,可能对其结果感到吃惊。
  当循环结束庆闭时$rock的值同循环开始之前相同。Perl foreach循环中控制变量的值会被Perl自动保存和恢复。当循环进行时,是没有办法改变其值的。循环结束时,变量的值会回到循环开始前,如果没有值则为undef。这意味着如果有一个变量和控制变量有相同的名字:“$rock”,不用担心会混淆灶哪它们。
自由de王国
推荐于2016-11-13 · TA获得超过1066个赞
知道小有建树答主
回答量:661
采纳率:50%
帮助的人:831万
展开全部

你在族带遍冲灶历列表的同时,改变了列表(shift删除了列表中的元素),导致遍历并散穗扮没有遍历所有元素。

所以你应该用

  foreach (@_)
     {
     $sum=$sum+$_ ;
     }

    print  "$sum.\n";
更多追问追答
追问
非常感谢回复,但我就是搞不懂为什么只删除了首个元素用foreach就不对了呢,从理论上讲是哪出错了?
追答
你要遍历@_,同时却在改变@_,那结果肯定是不对的。而且你不是“只删除了首个元素”,而是每次删除首个元素。你在循环中输出print "$_\n";,可以看出一些问题。foreach是根据下标来遍历的,假如列表元素个数是10,你运行5次(就是删除了5个元素),第六次进循环的时候,下标是5,这时列表中还有5个元素,下标最大就是4了,所以遍历就结束了。
我不知道你“搞不懂为什么只删除了首个元素用foreach就不对了呢”是具体哪个地方不懂,所以只能自说自话了。希望你能描述的更具体一点
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT测试之美
2020-12-26 · 教育领域创作者
IT测试之美
采纳数:2 获赞数:9

向TA提问 私信TA
展开全部

Jmeter是一款于如姿java公司开发的蠢袜接口和性能测试渣档绝工具,学好Jmeter可以有效帮助我们提高软件测试工作效率

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式