2013-11-22 21 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})