如果我=>
在像这样的数组结构中使用my $arr = [ a => b ];
,它和 是一样的my $arr = [a, b];
吗?(其实我这里有个不相关的问题,为什么以这种方式初始化数组不需要arr
前缀@
?)
来源: http: //www.misc-perl-info.com/perl-operators.html
如果这是真的,那么 perl 是否有充分的理由拥有这个看似不起眼的功能?
如果我=>
在像这样的数组结构中使用my $arr = [ a => b ];
,它和 是一样的my $arr = [a, b];
吗?(其实我这里有个不相关的问题,为什么以这种方式初始化数组不需要arr
前缀@
?)
来源: http: //www.misc-perl-info.com/perl-operators.html
如果这是真的,那么 perl 是否有充分的理由拥有这个看似不起眼的功能?
运算符是逗号的=>
同义词,但如果它以字母或下划线开头并且仅由字母、数字和下划线组成,它会使左侧的单词被解释为字符串。
为什么?
该=>
运算符有助于记录哈希中的键和值之间的对应关系,以及列表中的其他配对元素。(来源)
a => b
是一样的'a', b
。除了自动引用属性之外,暗示关系也很有用。相比:
Point->new('x', $x, 'y', $y)
Point->new(x => $x, y => $y)
[ ... ]
创建一个(匿名)数组并返回对它的引用。
[ ... ]
类似于
do { my @a = ( ... ); \@a }
这就是为什么将结果分配给标量的原因。如果你想创建一个数组,你会使用my @a
,而不是[ ]
。