有人可以解釋一下,如果檢查和通過時是什麼?//和||是什麼?運算符在Perl中做什麼?
if ($rate_minimum || 0) > ((4 * $rate_max_min) // 120 ):
對不起,不是一個Perl的開發
有人可以解釋一下,如果檢查和通過時是什麼?//和||是什麼?運算符在Perl中做什麼?
if ($rate_minimum || 0) > ((4 * $rate_max_min) // 120 ):
對不起,不是一個Perl的開發
||
是OR運算符。如果$rate_minimum
爲真,它將返回$rate_minimum
,否則返回0
。假值爲primarily0
,''
和undef
。
//
非常相似,但是只有測試定義。 (And is only available since Perl 5.10)。這意味着0
的值仍然計數,因此如果$rate_max_min
爲零,則將不會被替換爲120
。 (如果它會如果||
已經使用)
所以$rate_miniumum || 0
將返回,除非它可以是:0
,空字符串或不確定。在這種情況下,||
將會啓動,而它將變爲零。
第二部分檢測是否$rate_max_min
是定義,並且如果不是的話,替換120.值(這使得它能夠是零)
更多細節參見perlop
。
作爲一個相關的點 - 你也可以做||=
和//=
有條件地分配。
E.g.
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
編輯:由於melpomene
書面,(4 * $ rate_min_max)// 120是無用的,因爲*的結果絕不會是聯合國民主基金指出。
把條件應該可能是:
4 * ($rate_min_max // 30)
代替。
例如爲:
my $rate_min_max = 0;
print 4 * ($rate_min_max // 30),"\n";
$rate_min_max = undef;
print 4 * ($rate_min_max // 30),"\n";
以下解釋將幫助您:
見||是或邏輯運算符和//與||完全相同,只是它測試左側的定義而不是它的真值。因此,EXPR1 // EXPR2返回,如果它的定義,否則,返回EXPR2價值EXPR1值。
http://perldoc.perl.org/perlop。html有一個很好的總結 –
這是一個語法錯誤。首先,你錯過了一個附加的括號。其次,該行以冒號':'結尾,該冒號不屬於那裏。我想第三,代碼是沒有意義的,並且它的主要觀點是避免未定義的警告(它沒有),這可以用比這更好的方式處理。 – TLP