返回一个返回标量值的匿名函数

Sea*_*ean 1 perl

我试图找出在这个简单的声明中正在处理什么:

sub testReturn {
    return sub {
        my $val = shift;
        return $val;
    }
}
Run Code Online (Sandbox Code Playgroud)

什么时候

my $num = testReturn(1);
print $num;
Run Code Online (Sandbox Code Playgroud)

被称为,它输出:

CODE(0x9c63b34)
Run Code Online (Sandbox Code Playgroud)

当我试图让它只返回值1.谢谢.

mvp*_*mvp 7

您的函数将另一个函数作为匿名代码块返回.您可以调用该代码为您做一些事情,如下所示:

my $anonsub = testReturn(); # $anonsub is CODE object
my $num = &$anonsub(1);      # here this code is called
print $num;
Run Code Online (Sandbox Code Playgroud)

  • 或者`我的$ num = testReturn() - >(1);` (6认同)
  • `my $ num = $ anonsub - >(1);` (2认同)