operator || =是什么意思

时间:2013-06-02 14:36:48

标签: perl operators

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

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

3 个答案:

答案 0 :(得分:7)

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

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

类似于:

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

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

答案 1 :(得分:5)

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

具有相同的效果
if (!$sheet->{MaxCol}) { $sheet->{MaxCol} = $sheet->{MinCol}; }

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

答案 2 :(得分:0)

正如其他答案所说:这是Perl提供的速记之一。

$a += $b$a = $a + $b几乎相同。

为什么差不多?好吧,访问$ a的次数可能会导致不同的副作用。例如,如果$ a实际上是一个绑定变量。绑定变量/哈希/数组/文件句柄可以使您对存储进行读取和写入(例如Perl占用的RAM或某个地方的数据库文件或对传感器(温度,湿度,...)的简单访问)

有关更多信息,请参见perldoc -f tie。

您可能已经可以想象到,它非常强大,与Unix的“一切都是文件”一样,可以通过一个相当统一和通用的界面访问各种设备...

Perl中还有其他简写方式:

  • $a **= $b(在$ a中,$ a等于$ b的幂),
  • +=-=*//= ---就像锡罐上所说的一样,
  • %=取模
  • $a x= $b,在$ a tor $ b中重复该字符串
  • &=, |=, ^=,按位和,或XOR
  • &.=|.=^.=,相同的&=等,但是强制将操作数解释为字符串
  • <<=>>=用于按位移位
  • $a &&= $b是“如果$ a计算为真,则将其设置为$ b”。
  • ||=是“如果$ a计算为假(空字符串,值为零或未定义),请将$ a设置为$ b。这是一种设置默认值的好方法,如果0或空字符串不能为有效输入。
  • 我最喜欢的
  • \\=||=几乎相同,除了即使$ a为0或空字符串,它也不会将$ a设置为$ b。