这是什么perl表达式“”?
$DEBUG>=3 && DEBUG("OK=$ok");
让我如此困惑的主要是bool操作“&&”。任何人都能为我解释一下吗?谢谢。
答案 0 :(得分:5)
与以下内容相同:
if( $DEBUG >= 3 ) {
DEBUG("OK=$ok");
}
或
DEBUG("OK=$ok") if $DEBUG >= 3;
我个人更喜欢这个(它对我来说更具可读性)
说明:
Sentence1 && Sentence2
Sentence2
为真时才会执行 Sentence1
。和&&运算符是一个逻辑AND,所以如果第一个句子是假的,那么完整的操作将是假的(没有必要来评估第二个句子)
答案 1 :(得分:1)
$ DEBUG必须为3或更高且return
的{{1}}值也必须为sub DEBUG
。 true
表示不是
也会执行带有subs的布尔部件。因此,如果您的表达式位于True
子句中,则if
值将是该表达式的一部分。例如
return
答案 2 :(得分:1)
引用perlop:
C风格的逻辑和
Binary“&&”执行短路逻辑AND操作。那是, 如果左操作数为假,则甚至不评估右操作数。 标量或列表上下文传播到右操作数(如果是) 评价。
答案 3 :(得分:0)
&&
是和运算符。但是,与C
一样,Perl使用逻辑快捷方式。如果左侧是假的,您知道整个陈述是假的,因此您不必测试右侧。但是,如果左侧是真的,您必须测试右侧以确保整个陈述为真。
因此,如果$DEBUG >= 3
为真,则执行右侧$OK = "ok"
。它与:
if ( $DEBUG >= 3 ) {
$OK = "ok";
}
而且,我认为,最好像我做 1 一样把它写出来。即使你知道&&
在逻辑陈述中做了什么,它也会让你的大脑经过几毫秒的处理来弄清$DEBUG>=3 && $OK="ok";
正在做什么。然而,执行起来可能并不比写出更长的路要快。
在未来的某个地方,一些糟糕的系统应用程序程序员(又名sap)必须进入并维护代码。如果代码被严格写下的含糊不清的陈述所困扰,那么维持这将是一个负担。
1 甚至不想写$OK = "ok" if $DEBUG >= 3;
。这不是固定后if语句的情况。