"=>"运算符与数组上下文中的逗号类似吗?

zee*_*zee 0 perl

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

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

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

mat*_*exx 7

=>运营商的不同之处在于它会导致在它的左边一个字,如果它以字母开头或下划线被解释为一个字符串,只有字母,数字和下划线是由逗号的代名词.

为什么?

=>操作者是在记录键和值在散列,并且在列出了其他成对的元件之间的对应关系有帮助的.(来源)


ike*_*ami 6

a => b是一样的'a', b.除了自动引用属性之外,隐含关系也很有用.相比:

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

Point->new(x => $x, y => $y)
Run Code Online (Sandbox Code Playgroud)

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

 [ ... ]
Run Code Online (Sandbox Code Playgroud)

类似于

 do { my @a = ( ... ); \@a }
Run Code Online (Sandbox Code Playgroud)

这就是将结果分配给标量的原因.如果你想创建一个数组,你可以使用my @a,而不是[ ].