我想知道在以下条件下检查选项的最佳方法是什么:
如果我们谈论两个选项,那么很容易(例如在Perl中):
if(defined($a) && defined($b)) {
abort("Please use only one of the flags: a or b");
}
unless(defined($a) || defined($b)) {
abort(1,"Please use a or b");
}
Run Code Online (Sandbox Code Playgroud)
但是对于三种选择,它会有点混乱(太多ifs).有没有干净的方法呢?如果可能的话,不使用像xor(仅if-else-unless)这样的额外运算符.
因此,您需要确保定义一个且仅一个选项.
您可以先使用grep计算定义了多少选项:
my $count_defined_options = grep { defined } $a, $b, $c;
Run Code Online (Sandbox Code Playgroud)
然后你可以检查$ count_defined_options的值:
0:中止,因为没有给出选项
2或更多:因为给出的选项太多而中止
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |