当前位置:  开发笔记 > 编程语言 > 正文

如何在Perl中使用代码ref作为回调?

如何解决《如何在Perl中使用代码ref作为回调?》经验,为你挑选了1个好方法。

我班上有以下代码:

sub new {
    my $class = shift;
    my %args  = @_;
    my $self  = {};
    bless( $self, $class );
    if ( exists $args{callback} ) {
        $self->{callback} = $args{callback};
    }
    if ( exists $args{dir} ) {
        $self->{dir} = $args{dir};
    }
    return $self;
}

sub test {
  my $self = shift;
  my $arg  = shift;
  &$self->{callback}($arg);
}

和包含以下代码的脚本:

use strict;
use warnings;
use MyPackage;

my $callback = sub {
   my $arg = shift;
   print $arg;
};

my $obj = MyPackage->new(callback => $callback);

但是我收到以下错误:

Not a CODE reference ...

我错过了什么?印刷ref($self->{callback})节目CODE.它可以使用$self->{callback}->($arg),但我想使用另一种方式调用代码ref.



1> Adam Bellair..:

&符号只是绑定$self而不是整个绑定.你可以在返回引用的部分周围做curlies:

&{$self->{callback}}($arg);

但是

$self->{callback}->($arg);

通常被认为是清洁的,为什么你不想使用它?

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有