Perl`defined`函数复杂性
我有一个perl脚本,它接受一系列参数(强制和非强制)。根据这些参数确定脚本的流程。我感到困惑的是,如果在脚本中多次使用arg(以开关的形式)来确定流(大部分时间在Perl`defined`函数复杂性,perl,Perl,我有一个perl脚本,它接受一系列参数(强制和非强制)。根据这些参数确定脚本的流程。我感到困惑的是,如果在脚本中多次使用arg(以开关的形式)来确定流(大部分时间在if循环中使用),那么哪个更好 if(定义的arg){} 或 my$switch=defined arg?1:0; if($switch){}已定义已返回true或false。使用定义的的结果为true case选择true值,为false case选择false值只是额外的工作。这将完成您需要的所有工作,无需额外工作: if( de
if
循环中使用),那么哪个更好
if(定义的arg){}
或
my$switch=defined arg?1:0; if($switch){}
已定义
已返回true或false。使用定义的的结果
为true case选择true值,为false case选择false值只是额外的工作。这将完成您需要的所有工作,无需额外工作:
if( defined $foo ) { ... }
有时我想打印该真值或假值,因此我将使用双爆炸(否定,然后再次否定)来规范化该值:
!! defined $foo
这不是您应该优化的。使用最具可读性的内容。@ikegami感谢您的评论。。我知道这太小了,无法从优化的角度考虑。出于好奇,我想到了这一点。第二种选择增加了复杂性
defined foo
已经返回1
(这是真的)或q{}
(空字符串,为假)。您需要做的就是确保允许设置您的arg
,并且0
,因为在这种情况下它仍然是定义的。