0

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

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

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

4

2 回答 2

7

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

为什么?

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

于 2013-06-29T05:46:11.907 回答
6

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

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

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

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

 [ ... ]

类似于

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

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

于 2013-06-29T06:03:11.123 回答