如何将 Perl 数组引用中的元素作为单独的参数传递给子例程?

发布于 2024-08-18 10:25:11 字数 327 浏览 4 评论 0原文

我有一个列表,其中包含我想要传递给函数的参数。我如何调用该函数?

例如,假设我有这个函数:

sub foo {
  my ($arg0, $arg1, $arg2) = @_;
  print "$arg0 $arg1 $arg2\n";
}

假设我有:

my $args = [ "la", "di", "da" ];

如何在不编写 foo($$args[0], $$args[1], $$ 的情况下调用 foo args[2])

I have a list that contains arguments I want to pass to a function. How do I call that function?

For example, imagine I had this function:

sub foo {
  my ($arg0, $arg1, $arg2) = @_;
  print "$arg0 $arg1 $arg2\n";
}

And let's say I have:

my $args = [ "la", "di", "da" ];

How do I call foo without writing foo($$args[0], $$args[1], $$args[2])?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

离不开的别离 2024-08-25 10:25:11

您可以通过在数组引用前面添加 @ 来取消引用该数组引用。

foo( @$args );

或者如果你想更明确:

foo( @{ $args } );

You dereference an array reference by sticking @ in front of it.

foo( @$args );

Or if you want to be more explicit:

foo( @{ $args } );
飘然心甜 2024-08-25 10:25:11

这应该可以做到:

foo(@$args)

这实际上不是一个 apply 函数。该语法只是将数组引用取消引用回普通数组。 man perlref 告诉您有关引用的更多信息。

This should do it:

foo(@$args)

That is not actually an apply function. That syntax just dereferences an array reference back to plain array. man perlref tells you more about referecences.

老街孤人 2024-08-25 10:25:11

试试这个:

foo(@$args);

Try this:

foo(@$args);
苏佲洛 2024-08-25 10:25:11
foo(@$args);

或者,如果您有对 foo 的引用:

my $func = \&foo;
...
$func->(@$args);
foo(@$args);

Or, if you have a reference to foo:

my $func = \&foo;
...
$func->(@$args);
み零 2024-08-25 10:25:11

这很简单。 foo(@{$args})

It's simple. foo(@{$args})

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文