gpt4 book ai didi

perl - 为什么 MooseX::Storage 似乎没有遵循某些对象的属性特征?

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

我整理了一个小测试用例来演示我的问题:

package P1;
use Moose;
use MooseX::Storage;
with Storage;

has 'blah' => (
is => 'rw',
);

package P2;
use Moose;
use MooseX::Storage;
with Storage;

has 'lol' => (
is => 'rw',
traits => ['DoNotSerialize']
);

package P3;
use Moose;
extends 'P2';

has 'magic' => (
is => 'rw',
);

package Test;
my $obj = P3->new(
magic => 'This ok!',
lol => sub { 'weee' }
);

my $stored = P1->new(blah => $obj);

use Data::Dumper; print Dumper ($stored->pack);

我希望这会打印对象,但不会打印 P2 包中的“lol”属性 - 但是,我仍然可以在 $stored->pack 的结果中看到这一点
$VAR1 = {
'__CLASS__' => 'P1',
'blah' => bless( {
'magic' => 'This ok!',
'lol' => sub { "DUMMY" }
}, 'P3' )
};

我是否使用 MooseX::Storage 错误,或者这看起来像错误的行为?

最佳答案

是的,这看起来像一个错误。你能把它变成一个使用 Test::More 的测试并将它提交到 RT 队列,有人(可能是我)会解决这个问题。

请注意,如果您转储 $obj->store,您会看到该特征已正确应用于直接属性,但它似乎在继承过程中丢失了。

您可以在 RT 中报告针对 MooseX::Storage 的错误

关于perl - 为什么 MooseX::Storage 似乎没有遵循某些对象的属性特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/621876/

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