有人可以解释一下这是什么,如果检查和何时通过?
if ( $rate_minimum || 0 ) > ( (4 * $rate_max_min) // 120 ):
Run Code Online (Sandbox Code Playgroud)
抱歉没有成为perl开发人员
||是布尔值或运算符.$rate_minimum如果$rate_minimum是真的,它将返回,0否则.假值是主要 0,''和undef.
//非常相似,但只测试定义.(并且仅在Perl 5.10之后可用).这意味着值0仍为计数,因此如果$rate_max_min为零,则不会替换为120.(如果使用的话会去哪里||)
所以$rate_miniumum || 0将返回,$rate_minumum除非它是:0,空字符串或未定义.在这种情况下,||它将启动,而它将为零.
第二部分测试是否$rate_max_min已定义,如果不定义,则将该值替换为120.(这允许它为零)
有关perlop详细信息,请参阅
作为一个相关点 - 你也可以做||=和//=有条件地分配.
例如
my $value = undef;
$value //= 42;
print $value,"\n";
# 42
$value = 0;
$value //= 42;
print $value,"\n";
# 0
$value = 0;
$value ||= 42;
print $value,"\n";
# 42
Run Code Online (Sandbox Code Playgroud)
编辑:正如melpomene所说
如上所述,(4*$ rate_min_max)// 120是无用的,因为*的结果永远不会是undef.
这种有条件的应该大概是:
4 * ( $rate_min_max // 30 )
Run Code Online (Sandbox Code Playgroud)
代替.
例如:
my $rate_min_max = 0;
print 4 * ( $rate_min_max // 30 ),"\n";
$rate_min_max = undef;
print 4 * ( $rate_min_max // 30 ),"\n";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |