operator || =是什么意思

use*_*140 6 perl operators

在Perl中,||=以下示例中运算符的含义是什么?

$sheet -> {MaxCol} ||= $sheet -> {MinCol};
Run Code Online (Sandbox Code Playgroud)

And*_*mar 7

a ||= b类似于a = a || b,所以:

$sheet->{MaxCol} ||= $sheet->{MinCol};
Run Code Online (Sandbox Code Playgroud)

类似于:

$sheet->{MaxCol} = $sheet->{MaxCol} || $sheet->{MinCol};
Run Code Online (Sandbox Code Playgroud)

根据ikegami的评论,区别在于a ||= b;只评估a一次,并且a之前进行评估b.当a神奇或不是标量时,这很重要.


Сух*_*й27 5

$sheet -> {MaxCol} ||= $sheet -> {MinCol};
Run Code Online (Sandbox Code Playgroud)

有同样的效果

if (!$sheet->{MaxCol}) { $sheet->{MaxCol} = $sheet->{MinCol}; }
Run Code Online (Sandbox Code Playgroud)

要么

$sheet->{MaxCol} = $sheet->{MinCol} unless $sheet->{MaxCol};
Run Code Online (Sandbox Code Playgroud)