gpt4 book ai didi

perl - 了解此 map 行为

转载 作者:行者123 更新时间:2023-12-04 20:21:06 27 4
gpt4 key购买 nike

我正在使用 map 来提取二维数组的第一个元素。这是小代码片段。

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;

请帮助我了解这两个 map 声明。

最佳答案

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

首先,当它评估 (defined $_) && $_->[0] 时为 undef ,它看到 defined $_为假并停止处理 bool 表达式。 $_->[0]在这种情况下根本不进行评估。 defined $_是最后一次评估的操作,其结果是 false ,我猜用 0 表示.

第二,它是来自 @$array 的 child 的实际值。这就是它获得 undef 的地方值(value)。

关于perl - 了解此 map 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6516437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com