運營商||=
在perl中做什麼?perl運算符「|| =」做什麼?
更具體,如果你有一個像代碼:
my ($my_link);
$my_link ||= DownloadF($file,'l') if $s->{_l};
$my_link ||= DownloadF($file,'h') if $s->{_h};
$my_link ||= DownloadF($file,'o') if $s->{_o};
什麼||=
該做的,是什麼||=
和簡單=
之間的區別?
運營商||=
在perl中做什麼?perl運算符「|| =」做什麼?
更具體,如果你有一個像代碼:
my ($my_link);
$my_link ||= DownloadF($file,'l') if $s->{_l};
$my_link ||= DownloadF($file,'h') if $s->{_h};
$my_link ||= DownloadF($file,'o') if $s->{_o};
什麼||=
該做的,是什麼||=
和簡單=
之間的區別?
Perl的支持很多賦值運算符的時候一直有問題。 ||=
只是一個logical or
(完成短路,)分配。
所以基本上你看的是:
if ($s->{_l}) {
$my_link = $my_link || DownloadF($file,'l');
}
所以如果$my_link
計算爲一些真正的價值則$my_link
將被分配到自身(無操作本質上),否則DownloadF
結果分配。通過perl的支持
其他賦值運算符:
**= += *= &= <<= &&=
-= /= |= >>= ||=
.= %= ^= //=
x=
它似乎在這種情況下使用,以便每個_possible_賦值使用相同的運算符模式。 –
這意味着,如果$ my_link是零/沒有價值,然後分配給它=(值),這個值
如果$ my_link已經有值,那麼就沒有做任何事情
它僅當變量評估爲假值時才分配。 在每個示例行中,只有在條件$s->{..}
爲真時纔會分配$my_link
。
如果$my_link
是假(empty string, 0 or undef)
店DownloadF($file,'l')
到$my_link
此構造用來指定一個默認值(如果你想$my_link
爲零)
嘗試['的perldoc perlop'(http://perldoc.perl.org/perlop.html)下一次。 –