下面的代码是直接从 perldoc.perl.org 上的当前 perlsyn 页面复制的。[我根据需要添加了初始化和声明以使其运行(并且按预期工作),但重点是“when”关键字]
Perl 5.24 抱怨“何时”是实验性的。很公平,但我不想每次使用关键字时都看到这个。
没有警告 qw(experimental::when) 不起作用 - “未知警告类别......”
我也试过“开关”作为类别
有没有另一种方法来抑制这个警告(除了一般禁用警告)?
use v5.14;
for ($var) {
$abc = 1 when /^abc/;
$def = 1 when /^def/;
$xyz = 1 when /^xyz/;
default { $nothing = 1 }
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式在没有警告的情况下启用此构造
use experimental 'switch';
Run Code Online (Sandbox Code Playgroud)
或仅通过禁用“实验性”警告类别
no warnings 'experimental::smartmatch';
Run Code Online (Sandbox Code Playgroud)
(请参阅中可用警告类别perldoc warnings的完整列表)。
但请注意,智能匹配, given和when构造被认为是从根本上被破坏的,并且正在被删除/重新设计。当您在其他 perl 版本上运行该代码时,仅关闭警告就会破坏您的代码。
相反,请更愿意明确地拼出此代码:
for ($var) {
if (/^abc/) { $abc = 1 }
elsif (/^def/) { $def = 1 }
elsif (/^xyz/) { $xyz = 1 }
else { $nothing = 1 }
}
Run Code Online (Sandbox Code Playgroud)
是的,它更难看,但它也适用$var于所有 Perl5 版本的所有值。
小智 3
given是实验when的一部分smartmatch,因此可以使用以下方法禁用这些警告:
no warnings qw( experimental::smartmatch );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |