gpt4 book ai didi

具有多个相互依赖属性的 Perl Moose

转载 作者:行者123 更新时间:2023-12-02 06:28:04 27 4
gpt4 key购买 nike

如何创建我的 Perl Moose 类,以便以正确的顺序构建多个相互依赖的属性?在我的例子中,我想从我的主配置文件中指定的配置文件配置我的 Log::Log4perl 对象。

最佳答案

如果初始化确实是相互依赖的,那么你就有问题了,因为其中一个属性必须先于另一个属性初始化。但是您的描述中没有任何内容支持这一点。听起来创建记录器需要配置文件,仅此而已。

只是让 logger 的创建变得懒惰,让 config 有机会被设置。

package Class;

use Moose;

has config => ( ... );

has logger => (
isa => 'Str',
is => 'ro',
lazy => 1,
default => sub {
my $self = shift;
my $config = $self->config
or die(...);

return Log::Log4perl->get_logger( $config->{logger} );
},
handles => [qw( info warn error fatal )],
);

示例用法

my $o = Class->new( config => "..." );
$o->warn("...");

# Assuming config isn't required=>1.
my $o = Class->new();
$o->config("...");
$o->warn("...");

关于具有多个相互依赖属性的 Perl Moose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118577/

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