小编Han*_*bal的帖子

在 Moose 构造函数中,如何确定它是在什么上下文中调用的?

假设我们有一个像这样的 Moose 类:

package My::Test ;
use Moose ;
$\="\n";

sub BUILDARGS {
    my ($pkg,%args) = @_ ;
    print defined wantarray ? 'BUILDARGS: SCALAR':'BUILDARGS: VOID' ;
    return \%args ;
}

sub BUILD {
    print defined wantarray ? 'BUILD: SCALAR':'BUILD: VOID' ;
    my ( $self, $args ) = @_ ;
    print '---' ;
}
1;
Run Code Online (Sandbox Code Playgroud)

在 SCALAR 和 VOID 上下文中实例化类我总是得到相同的输出:

#!/usr/bin/perl
use Moose ;
use My::Test ;
# Scalar ctx
my $instance = My::Test->new ;
# Void ctx
My::Test->new ;
Run Code Online (Sandbox Code Playgroud)

输出: …

perl moose

2
推荐指数
1
解决办法
55
查看次数

标签 统计

moose ×1

perl ×1