在Perl中,||=以下示例中运算符的含义是什么?
$sheet -> {MaxCol} ||= $sheet -> {MinCol};
Run Code Online (Sandbox Code Playgroud)
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神奇或不是标量时,这很重要.
$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)