【问题标题】:Perl - skipping second if in a foreach loopPerl - 如果在 foreach 循环中跳过第二个
【发布时间】:2014-10-28 10:33:22
【问题描述】:

如果我在 Perl foreach 循环中有 2 个 if 循环,如果我的脚本进入我的第一个 if,我该如何跳过第二个 if

例子:

my $var1 = 1;
my $var2 = 1;

for my $item ('...') {
    if ( $var1 == 1 ) {
        print "First IF \n";
    }
    if ( $var2 == 1 ) {
        print "Second IF (I don't want this to be printed if the first if is true)\n";
    }
}

【问题讨论】:

  • 请避免使用$a$b变量,它们在sort函数中使用。
  • 在表示变量时最好避免使用裸词

标签: perl if-statement foreach


【解决方案1】:

elsif:

if (pred1) {
    ...
} elsif (pred2) {
    ...
}

如果 Predicate 1 的计算结果为 true,则不会考虑 Predicate 2 和与之关联的块 [NB: not "loop"]。

【讨论】:

  • @ZeldaElf 注意:if ($a == 1) - 不仅仅是a
  • @mpapec 你在挑剔我的缩进?!东西……我使用的每一种 C 支撑语言都以这种方式缩进,而且我不会仅仅因为一位作者这么说就为 Perl 更改它!
【解决方案2】:

一种解决方案是设置逻辑,以便仅在测试 1 为假时检查测试 2。

foreach my $item (@items) {
  if (test1) {
    ...
  elsif (test2) {
    ...
  }
}

但另一种选择是使用next 直接跳到循环的下一个迭代。

foreach my $item (@items) {
  if (test1) {
    ...
    next;
  }
  if (test2) {
    ...
  }
}

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2023-03-14
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多