gpt4 book ai didi

arrays - Perl, `map` 函数的未知结果

转载 作者:行者123 更新时间:2023-12-04 12:17:57 26 4
gpt4 key购买 nike

我在 print @squares 得到一个非常奇怪的结果下面的数组;
我应该得到 49 但我得到了一些随机数:

@numbers={-1,7};

my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;

print @squares;
$ perl g.pl
12909907697296

最佳答案

这是不正确的:

@numbers={-1,7};
{ }构建散列并返回对散列的引用。以上等价于
my %anon = ( -1 => 7 );
@numbers = \%anon;
被视为数字的引用将底层指针作为数字返回,因此您会得到垃圾。

要填充数组,请使用
my @numbers = ( -1, 7 );
-1, 7返回两个数字,在分配给数组时将它们添加到数组中。 (括号并不特殊;它们只是像数学一样覆盖优先级。)

完整的程序:
use 5.014;      # ALWAYS use `use strict;` or equivalent! This also provides `say`.
use warnings; # ALWAYS use `use warnings;`!

my @numbers = ( -1, 7 );

my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;

# Print each number on a separate line.
# Also provides the customary final line feed.
say for @squares;
选择:
my @squares =
map { $_ * $_ }
grep { $_ > 5 }
@numbers;

关于arrays - Perl, `map` 函数的未知结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67558863/

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