代码之家  ›  专栏  ›  技术社区  ›  William Pursell

“含糊地否决”是什么意思?模式?

  •  1
  • William Pursell  · 技术社区  · 16 年前

    在讨论中 ?PATTERN? , perlop 声明“这种用法被模糊地否决了”。这是否意味着 ?? 匹配操作符本身将从Perl中删除,还是意味着它的语义将发生变化?正在使用 ?? 一个坏主意,或者可以忽略Perlop中的警告吗?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Chris Lutz    16 年前

    我认为它或多或少意味着它所说的:

    这种用法被模糊地弃用了,这意味着它可能在将来的Perl版本中被删除,可能在2168年左右的某个时候被删除。

    这意味着他们在发布Perl6时会删除它。

    我孩子,我孩子。我假设“含糊不清地否决”意味着它不是一个糟糕的结构,但您可能想重新考虑您的设计。我个人甚至不知道是什么(或者 reset() 函数甚至存在),直到我刚才查看了它,并且看到了它,我不知道我是否会用它做任何事情。他们在Perlop中给出的示例有点神秘:

    while (<>) {
      if (?^$?) {
        ...
      }
    } continue {
      reset if eof;
    }
    

    我会写同样的,更明显的:

    my $reset = 1;
    while (<>) {
      if ($reset and /^$/) {
        ...
        $reset = 0;
      }
    } continue {
      $reset = 1 if eof;
    }
    

    它更冗长,但它对大脑(和维护者)来说更明显和更容易。

        2
  •  5
  •   Michael Carman    16 年前

    你没读过这句话的其余部分吗?看起来很清楚:

    这种用法被模糊地否决了,这意味着 它只是可能 可能在将来的Perl版本中被删除 , 也许在2168年左右。

    对我来说,这意味着Perl的维护人员不喜欢这种特殊的案例行为,他们宁愿人们不使用它,但也不打算改变它。

    使用安全。它必须经历一个真正的折旧周期(可能会持续很长一段时间),然后才能被移除。也就是说,我不会用它。这个特性非常深奥,很容易混淆维护代码的人(将来可能是您)。