gpt4 book ai didi

perl - 如何在 Perl 中迭代/取消引用子例程引用数组?

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

我正在尝试找出如何迭代子例程引用数组。

这个语法有什么问题?

use strict;
use warnings;

sub yell { print "Ahh!\n"; }
sub kick { print "Boot!\n"; }
sub scream { print "Eeek!\n"; }

my @routines = (\&yell, \&kick, \&scream);
foreach my $routine_ref (@routines) {
my &routine = &{$routine_ref};
&routine;
}

提前致谢!

最佳答案

在您的 foreach 循环中,以下是语法错误:

my &routine;

你的变量$routine_ref已经有一个对子例程的引用,所以此时你需要做的就是调用它:

for my $routine_ref (@routines) {
&{$routine_ref};
}

与 Perl 一样,“有不止一种方法可以做到这一点。”例如,如果这些子例程中的任何一个采用参数,您可以将它们传递到括号内,如下所示:

for my $routine_ref (@routines) {
$routine_ref->();
}

另请注意,我使用了 for 而不是 foreach,这是 Damian Conway in Perl Best Practices 提出的最佳实践.

关于perl - 如何在 Perl 中迭代/取消引用子例程引用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452529/

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