当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《"map"如何解释Perl中的第一个参数?》经验,为你挑选了1个好方法。

我对Perl的"map"功能有一些疑问.

特别:

如何

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

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

为什么

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

不行?我试图在这里返回两个元素的列表...在解析器的角度来看,如何在"("修复它之前预先加上"+"?

Leon Timmerm.. 9

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

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

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



1> Leon Timmerm..:

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

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

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

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有