2013-06-02 11 views
6

Perlでは、次の例の演算子||=はどういう意味ですか?演算子の意味は?|

$sheet -> {MaxCol} ||= $sheet -> {MinCol}; 
+0

http://perldoc.perl.org/perlop.html –

答えて

7

a ||= bはそう、a = a || bのようになります。

$sheet->{MaxCol} ||= $sheet->{MinCol}; 

は次のようになります。池上さんのコメントパー

$sheet->{MaxCol} = $sheet->{MaxCol} || $sheet->{MinCol}; 

、違いはa ||= b;は一度だけa評価し、それが評価されるということですaの前にb。これは、aが魔法であるかスカラーでない場合に問題となります。

5
$sheet -> {MaxCol} ||= $sheet -> {MinCol}; 

if (!$sheet->{MaxCol}) { $sheet->{MaxCol} = $sheet->{MinCol}; } 

または

$sheet->{MaxCol} = $sheet->{MinCol} unless $sheet->{MaxCol}; 
+0

1と同様の効果がより明確にそれが実際に何を意味するのかを説明してい – Andomar

関連する問題