我对perl的效率和可读性有疑问
我有一个变量可以采用几个值之一(5-6).有时我想检查这是否是一个特定的值,有时我想检查它是否是几个选择之一.我在我的代码中(在不同的函数中)在很多地方做出这样的决定,我想尽可能"紧凑".
例如,说
my $mode; # can be any of qw(one two three four five six)
if ($mode eq 'one') {
#do code
}
if ($mode eq 'one' or $mode eq 'two' or $mode eq 'three') {
#do more code
}
Run Code Online (Sandbox Code Playgroud)
这当然不是我真正的代码,并且使用有意义的变量名称,我的if语句变得非常长并且包含在几行上.
任何帮助表示赞赏!
该List::MoreUtils模块具有该any功能,就像一个短路grep:
use List::MoreUtils qw/any/;
say "correct mode" if any { $_ eq $mode } qw/one two three/;
Run Code Online (Sandbox Code Playgroud)
也就是说,你仍然可以使用grep,但是它总是测试所有元素,而any在第一个匹配元素之后中止:
say "correct mode" if grep { $_ eq $mode } qw/one two three/;
Run Code Online (Sandbox Code Playgroud)