【问题标题】:Perl-Using same variable for nested loops considered improper?Perl-对被认为不正确的嵌套循环使用相同的变量?
【发布时间】:2013-12-01 16:12:44
【问题描述】:

在 for 循环中我通常这样做:

for my $i (0 .. 6){
###stuff to loop
}

但是,如果我多次使用 $i 是否会被视为不当使用? 例如:

(这些循环是故意嵌套在一起的)

for my $i (0 .. 6){
###some stuff
    for my $i (0 .. 30){
    ###double looped ...
    }
}

【问题讨论】:

  • 我建议使用不同的变量名称,如果您必须使用多个索引,则更容易跟踪正在发生的事情,并且如果某些事情无法正常工作,可能对调试更有帮助。
  • 你的意思是让那些 for 循环嵌套吗?或者这只是一个错字?
  • @TLP 这是故意的,抱歉没有澄清。
  • @Shortland 你应该使用缩进。

标签: perl


【解决方案1】:

很可能编写这样的代码,在迭代器上使用同名的嵌套循环,当您使用默认变量$_ 时会发生这种情况。您是否应该这样做是另一个问题。

发生的情况是变量被本地化了。

for my $i (1 .. 2) {
    # $i == 1 or 2
    for my $i (3 .. 4) {
    # $i == 3 or 4
    }
    # $i returns to the old value 1 or 2
}

如果在嵌套循环中使用相同的变量名,则不能在内循环内部访问外循环的循环迭代器。因此,在回答您的问题时,如果不是不恰当的,那是相当不切实际的。而且我认为对于经验不足的程序员来说,这可能会导致混乱,所以从这个意义上说,我会说这不是一个好主意。

【讨论】:

  • 它们是故意嵌套在一起的,很抱歉没有澄清这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2023-04-02
  • 1970-01-01
  • 2011-07-06
  • 2020-04-03
  • 1970-01-01
相关资源
最近更新 更多