运营商||=
在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};
||=
想要做什么以及||=
与简单=
之间有什么区别?
答案 0 :(得分:4)
Perl支持许多赋值运算符。 ||=
只是一个logical or
(完成短路),分配。
基本上你正在看的是:
if ($s->{_l}) {
$my_link = $my_link || DownloadF($file,'l');
}
因此,如果$my_link
评估为某个真值,那么$my_link
将被分配给自己(本质上是无操作),否则会分配DownloadF
的结果。
perl支持的其他赋值运算符:
**= += *= &= <<= &&=
-= /= |= >>= ||=
.= %= ^= //=
x=
答案 1 :(得分:2)
如果$my_link
为假(empty string, 0 or undef)
将DownloadF($file,'l')
存储到$my_link
当用于分配默认值时,此构造始终存在问题(如果您希望$my_link
为零,则该怎么办)
答案 2 :(得分:1)
这意味着如果$ my_link为nil /没有值,则将该值赋值为=(value)
如果$ my_link已经有值,则它不会做任何事情
答案 3 :(得分:1)
仅在变量求值为false值时才指定。
在每个示例行中,只有在条件$my_link
为真时才会分配$s->{..}
。