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

perl – 理解这个地图行为

发布时间:2020-12-15 21:45:11 所属栏目:大数据 来源:网络整理
导读:我正在使用map来提取2D数组的第一个元素.这是一个小代码片段. my $array = [ [1,11,111],[2,22],undef,[4] ];my @firstList = map { (defined $_) $_-[0] } @$array; 所以在这里我期待map返回一个数组,其元素的值为undef或$array元素的第一个元素. 但输出与
我正在使用map来提取2D数组的第一个元素.这是一个小代码片段.
my $array = [ [1,11,111],[2,22],undef,[4] ];

my @firstList = map { (defined $_) && $_->[0] } @$array;

所以在这里我期待map返回一个数组,其元素的值为undef或$array元素的第一个元素.

但输出与我期望的不一样.
对于undef,我得到’标量’类型的元素.

如果我用以下块更改map语句,那么我得到了预期的结果.

my @firstList = map { $_->[0] } @$array;

请帮我理解这两个地图陈述.

解决方法

它们都返回上次执行的操作的结果.

首先,当它评估(定义$_)&& $_-> [0]对于undef,它看到定义的$_是false并停止处理布尔表达式.在这种情况下,根本不评估$_-> [0].定义$_是最后一次计算的操作,其结果为false,我猜是用0表示.

对于第二个,它是@ $数组的子实际值,它是获取undef值的地方.

(编辑:李大同)

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

    推荐文章
      热点阅读