gpt4 book ai didi

perl - 子引用作为参数

转载 作者:行者123 更新时间:2023-12-02 07:49:07 25 4
gpt4 key购买 nike

另一个 Perl 初学者问题,但奇怪的是,我没有找到任何教程来解释这个简单的问题。

作为练习,我想编写一个函数 map,它接受一个函数和一个数组,返回一个数组。在函数式语言中,这是经常使用的,我听说过子引用以及如何使用它们。

sub map {
my $f = shift;
my @r = ();

foreach (@_) {
push(@r, &f($_));
}
return @r;
}

sub square {
my $r = shift;
return $r*$r;
}

print map(\&shift, 1, 2, 3, 4, 5);

但是,出于某种原因,我只得到单词 CODE 和一个十六进制数作为输出,共五次。然后,我将 mapf 的调用更改为 $$f($_)$f->($ _) 但所有结果都相同。

我在这里做错了什么?

最佳答案

  1. perl 有一个内置的map 函数。我们称它为 map2

  2. 使用&$f 取消引用$f

  3. 使用join正确打印数组


sub map2 {
my $f = shift;
my @r = ();

foreach (@_) {
push(@r, &$f($_));
}
return @r;
}

sub square {
my $r = shift;
return $r*$r;
}

print join ",", map2(\&square, 1, 2, 3, 4, 5);

$ perl 1.pl
1,4,9,16,25

关于perl - 子引用作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720501/

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