2013-12-21 3 views
-2

Что делает оператор ||= в 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}; 

что ||= предполагают, чтобы сделать, и в чем разница между ||= и простым =?

+2

Try [ 'perldoc perlop'] (http://perldoc.perl.org/perlop.html) в следующий раз. –

ответ

4

Perl поддерживает множество операторов присваивания , ||= - всего лишь logical or (в комплекте с короткой схемой).

Итак, по существу, что вы смотрите на это:

if ($s->{_l}) { 
    $my_link = $my_link || DownloadF($file,'l'); 
} 

Так что если $my_link оценивает в какой-то истинное значение, то $my_link будет присвоен себе (не-оп, по существу), в противном случае результат DownloadF является назначены.

Другие операторы присваивания, поддерживаемые Perl:

**= += *= &= <<= &&= 
-= /= |= >>= ||= 
.= %= ^= //= 
x= 
+0

Кажется, что он используется в этом случае, так что каждое из _possible_ назначений использовало один и тот же шаблон операторов. –

1

это означает, что если $ my_link равна нулю/не имеет никакого значения, а затем присвоить ему это значение = (значение)

если $ my_link уже имеет значение, то это ничего не делать

1

It присваивает, только если переменная принимает значение false. В каждой строке вашего примера $my_link присваивается только в том случае, если выполнено условие $s->{..}.

2

Если $my_link ложна (empty string, 0 or undef) магазин DownloadF($file,'l') в $my_link

Эта конструкция всегда были проблемы, когда используется для присвоения значения по умолчанию (то, что если вы хотите $my_link равным нулю)

Смежные вопросы