2013-11-22 2 views
1

Это часть кода:Что означает // и // = в Perl?

return undef if ($mate{$grid_edge->[0]} // '') eq $grid_edge->[1]; 

$node->{count} //= count($node->{low}) + count($node->{high}); 

Так Что // '' и //= означает в Perl в приведенных выше строк кода?

+4

Как и все операторы Perl, это объясняется в 'perldoc perlop', также [доступно здесь] (http://perldoc.perl.org/perlop.html). Найдите «C-style Logical Defined-or» (если вы ищете «//», вам нужно пропустить много использования '//' в сопоставлении с образцом). –

ответ

6

Оператор // официально является оператором Logical Defined-Or.

В первой строке:

($mate{$grid_edge->[0]} // '') 

означает: если $mate{$grid_edge->[0]} определено, использовать это значение, в противном случае использовать '' в качестве значения. Обратите внимание, что одинарные кавычки - это просто пустая строка, а не часть оператора.

Во второй строке:

$node->{count} //= count($node->{low}) + count($node->{high}); 

Если $node->{count} не определен, ему присваивается count($node->{low}) + count($node->{high}).

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