是“=>”运算符类似于数组上下文中的逗号?

时间:2013-06-29 03:30:14

标签: perl

如果我在=>这样的数组结构中使用my $arr = [ a => b ];,它是否与my $arr = [a, b];相同? (实际上我在这里有一个不相关的问题,为什么用这种方式初始化数组不需要arr前缀@?)

来源:http://www.misc-perl-info.com/perl-operators.html

如果这是真的,那么perl是否有充分理由拥有这个看似模糊的功能呢?

2 个答案:

答案 0 :(得分:7)

=>运算符是逗号的同义词,不同之处在于,如果它以字母或下划线开头并且仅由字母,数字和下划线组成,则会使其左侧的单词被解释为字符串。

<强>为什么吗

=>运算符有助于记录哈希中键和值之间的对应关系,以及列表中的其他配对元素。 (source

答案 1 :(得分:6)

a => b'a', b相同。除了自动引用属性之外,隐含关系也很有用。比较:

Point->new('x', $x, 'y', $y)

Point->new(x => $x, y => $y)

[ ... ]创建一个(匿名)数组并返回对它的引用。

 [ ... ]

类似于

 do { my @a = ( ... ); \@a }

这就是将结果分配给标量的原因。如果您想创建数组,则使用my @a,而不是[ ]