我正在使用这行代码:
$sheet -> {MaxRow} ||= $sheet -> {MinRow};
在我的脚本中。 我不明白帮助我。
答案 0 :(得分:0)
||=
表示'或等于',因此,如果MaxRow为0
或任何其他错误值,则MaxRow将设置为MinRow的值。
||=
是其中一个很好描述的赋值运算符
perldoc perlop
||=
的一个常见用途是为可选子例程变量定义默认值。
my $data = { foo => 123, bar => 456, baz => 789 };
process($data);
sub process {
my ($data, $is_special) = @_;
$is_special ||= 0; # Typically not special
do_something($data);
do_special($data) if $is_special;
}
正如Sobrique建议的那样,“缓存”是一种“缓存”。是另一个常见的用例,可以节省自己计算一些昂贵的功能。
my $fib_cache = [];
sub fib {
my ($n) = @_;
return 1 if ($n == 0);
return 1 if ($n == 1);
$fib_cache->[$n] ||= fib($n-1) + fib($n-2); # Only compute if not seen before.
sleep(1); # To make this slow enough...
return $fib_cache->[$n];
}
print "Fib 10 is " . fib(10) . "\n"; # Takes 10 seconds...
print "Fib 10 is " . fib(10) . "\n"; # Instant