运营商||=
在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)下一次。 –