加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:34:09 所属栏目:大数据 来源:网络整理
导读:我对Perl的“map”功能有一些疑问. 特别: 怎么样 %hash = map {$_ = 1} @array 创建哈希映射数组的元素为1?块如何返回两个元素的列表?我以为block返回它的最后一个值.是=隐式创建一个列表,而不是“,”返回其正确的参数? 为什么呢 %hash = map($_ = 1),
我对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 );

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读