加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 为什么MooseX :: Storage似乎不遵循某些对象的属性特征

发布时间:2020-12-15 21:43:11 所属栏目:大数据 来源:网络整理
导读:我已经整理了一个小测试用例来演示我的问题: 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
我已经整理了一个小测试用例来演示我的问题:
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是错误的,还是看起来像有错误的行为?

解决方法

你可以把’等等’变成P3的isa ……
has 'blah' => (
    is  => 'rw',isa => 'P3',);

现在Dumper($stored-> pack)显示了这个….

$VAR1 = {
      '__CLASS__' => 'P1','blah' => {
                  '__CLASS__' => 'P3','magic' => 'This ok!'
                }
};

看起来像这个Moose对象的正确序列化?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读