“map”如何解释Perl中的第一个参数?

前端之家收集整理的这篇文章主要介绍了“map”如何解释Perl中的第一个参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对Perl的“map”功能有一些疑问.

特别:

>怎么样

%hash = map {$_ => 1} @array

创建哈希映射数组的元素为1?块如何返回两个元素的列表?我以为block返回它的最后一个值.是=>隐式创建一个列表,而不是“,”返回其正确的参数?
>为什么呢

%hash = map($_ => 1),@ array

不行?我试图在这里返回两个元素的列表……在解析器的角度来看,如何在“(”“修复它之前”?

解决方法

问题1:映射块是运行列表上下文,因此允许返回零,一个或多个值. map将它们全部返回. “,”或“=>”在标量上下文中返回其右侧,但在列表上下文中返回双方.有关详细信息,请参阅 perlop.

问题2:%hash = map($_ => 1),@ array被解释为%hash =(map($_,1),@ array).换句话说,它返回(1,@ array).
在%hash = map($_ => 1),@ array中,表示()不引用参数列表,因此它被解释为map(($_ => 1),@ array );

当天的教训:总是在地图表达中使用赞美,这样你就不会被这些问题所困扰.

猜你在找的Perl相关文章