gpt4 book ai didi

perl - 如何弃用基于 Moose 的类中的属性

转载 作者:行者123 更新时间:2023-12-01 10:51:22 25 4
gpt4 key购买 nike

我有一个 Moose based class ,有几个我想删除的属性。

我希望对它们的任何使用都生成弃用警告。
可能有一种方法可以禁用警告。

package JSON::RPC::LWP;
...
use Moose;
...

has previous_id => (
is => 'ro',
isa => JSONValue,
init_arg => undef,
writer => '_previous_id',
predicate => 'has_previous_id',
clearer => 'clear_previous_id',
);

# default id generator is a simple incrementor
my $default_id_gen = sub{
my($self,$prev) = @_;
$prev ||= 0;
return $prev + 1;
};

has id_generator => (
is => 'rw',
isa => 'Maybe[CodeRef]',
default => sub{ $default_id_gen },
trigger => sub{
my($self,$coderef) = @_;
unless( $coderef ){
$self->{id_generator} = $default_id_gen;
}
},
);

我已经removed the only place id_generator was used .


目前唯一已知的user此模块的 id_generator 设置为有效地将其设置为 future 行为的代码引用。
我有 modified它只能在我的模块的旧版本上执行此操作。 (尚未发布)

package Games::Lacuna::Client::RPC;
...
use Moose;

extends 'JSON::RPC::LWP';
...

has '+id_generator' => (
default => sub{sub{1}},
);

最佳答案

这是另一种方法!使用 MooseX::Deprecated :-)

with "MooseX::Deprecated" => {
attributes => [ "id_generator" ],
};

我写 MooseX::Deprecated 的灵感来自于我之前对这个问题的回答。它将方法修饰符的应用、检查 init_args、摆弄 %Carp::Internalwarnings::enabled 封装到一个整洁的小包中。

关于perl - 如何弃用基于 Moose 的类中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609765/

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