gpt4 book ai didi

perl - 如何在 Perl 中访问函数参数?

转载 作者:行者123 更新时间:2023-12-03 20:01:19 26 4
gpt4 key购买 nike

在 C++ 中,我会做这样的事情:

void some_func(const char *str, ...);
some_func("hi %s u r %d", "n00b", 420);

在 PHP 中,我会这样做:

function some_func()
{
$args = func_get_args();
}
some_func($holy, $moly, $guacomole);

我如何在 Perl 中做到这一点?

sub wut {
# What goes here?
}

最佳答案

你会这样做:

sub wut {
my @args = @_;
...
}

Perl 自动填充特殊的 @_调用函数时的变量。您可以通过多种方式访问​​它:
  • 直接,只需使用 @_或其中的单个元素为$_[0] , $_[1] ,等等
  • 通过将其分配给另一个数组,如上所示
  • 通过将其分配给标量列表(或可能是哈希,或另一个数组,或它们的组合):
    sub wut {  my ( $arg1, $arg2, $arg3, @others ) = @_;  ...}
  • Note that in this form you need to put the array @others at the end, because if you put it in earlier, it'll slurp up all of the elements of @_. In other words, this won't work:

    sub wut {
    my ( $arg1, @others, $arg2 ) = @_;
    ...
    }

    您也可以使用 shift@_ 中提取值:
    sub wut {
    my $arg1 = shift;
    my $arg2 = shift;
    my @others = @_;
    ...
    }

    请注意 shift将自动在 @_ 上工作如果您不提供参数。

    编辑:您还可以通过使用散列或散列引用来使用命名参数。例如,如果您调用 wut()像:
    wut($arg1, { option1 => 'hello', option2 => 'goodbye' });

    ...然后您可以执行以下操作:
    sub wut {
    my $arg1 = shift;
    my $opts = shift;
    my $option1 = $opts->{option1} || "default";
    my $option2 = $opts->{option2} || "default2";
    ...
    }

    这将是在函数中引入命名参数的好方法,这样您就可以稍后添加参数,而不必担心它们传递的顺序。

    关于perl - 如何在 Perl 中访问函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719220/

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