小编Gab*_*la 的帖子

Moose:在BUILD方法中从文件加载对象

我必须在BUILD方法中读取一个文件,并且我想使用MooseX :: Storage包的load方法.
但是这个load方法创建了一个新对象,因此当我实例化对象时,这不是从文件中读取的对象.在下面的代码中,我创建了一个对象$ m1,状态为2,用于写入文件,我创建了$ m2,没有参数来读取文件,但是$ m2不包含正确的值.包裹:

package mia;
use Moose;
use MooseX::Storage;

with Storage(format => 'JSON', io => 'File');

has 'nome'  => ( is     => 'rw', isa    => 'Str', default =>'',);
has 'stato' => ( is     => 'rw', isa    => 'Int', default =>1,);

sub BUILD{ 
my $self=shift;
    if ($self->stato==1){
      $self=mia->load("mia.dat");
    }
    if ($self->stato==2){
    $self->stato(0);
    $self->nome("prova");
    $self->store("mia.dat");    
 } 
sub stampa(){
my $self=shift;
print $self->nome." ".$self->stato;
}
Run Code Online (Sandbox Code Playgroud)

主程序

use mia;
my $m;

$m1=mia->new(stato=>2); 
$m2=mia->new();
print "\nm1 \n";
$m1->stampa();
print "\nm2 \n"; …
Run Code Online (Sandbox Code Playgroud)

perl build moose

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

标签 统计

build ×1

moose ×1

perl ×1