olarak depolayın Moose'da yeniyim ve bir PDL özelliğini özellik olarak kullanarak bir takıma varana kadar oldukça iyiyim. Bir nesneyi bir dosyaya yazabilmek istiyorum (use MooseX::Storage; with Storage('io' => 'StorableFile');
kullanıyorum ve bu nesne bir PDL
özniteliğine sahiptir. PDL::IO::Storable
bu şekilde Storable
kullanmak için gerekli yöntemleri sağlar, ancak nasıl bir kayıp olduğunu . Moose bunu İşte Bir PDL olan bir Moose nesnesini
#!/usr/bin/perl
package LinearPDL;
use Moose;
use PDL::Lite;
use PDL::IO::Storable;
use MooseX::Storage;
with Storage('io' => 'StorableFile');
has 'length' => (is => 'ro', isa => 'Num', required => 1);
has 'divisions' => (is => 'ro', isa => 'Int', required => 1);
has 'linear_pdl' => (is => 'ro', isa => 'PDL', lazy => 1, builder => '_build_pdl');
sub _build_pdl {
my $self = shift;
my $pdl = $self->length()/($self->divisions() - 1) * PDL::Basic::xvals($self->divisions());
return $pdl;
}
no Moose;
__PACKAGE__->meta->make_immutable;
use strict;
use warnings;
my $linear_pdl = LinearPDL->new('length' => 5, 'divisions' => 10);
print $linear_pdl->linear_pdl;
$linear_pdl->store('file'); # blows up here!
my $loaded_lpdl = load('file');
print $loaded_lpdl->linear_pdl;
Ben yapmanız gerekebilir düşünüyorum PDL türü veya belki de bir şey içine PDL sarın (MooseX::NonMoose::InsideOut
kullanarak), ama belki de birileri beni bundan koruyabilir (veya eğer doğruysa bana doğru yolu işaret et).
Bu çok umut verici görünüyor, biraz daha genişleyebilir misiniz? Sınıf tanımında '$ engine' nesnesini oluşturuyor muyum? Genişletme ve daraltma birimleri için girdi ve çıktılar nelerdir? Daha iyi belgelerin veya öğreticilerin bulunabileceği bir yer var mı? Teşekkürler! –
Joel, maalesef bu MooseX :: Storage'ın belgelenmemiş bir parçasıdır. Bu yüzden irc kanalı ve/veya listesiyle konuşmayı önerdim. Daha önce MooseX :: Storage için [kaynak] (http://cpansearch.perl.org/src/BOBTFISH/MooseX-Storage-0.30/lib/MooseX/Storage/Engine.pm) aracılığıyla hızlı bir bakışta bulundum çünkü Bu özellik var ama nasıl/nerede olduğunu hatırlayamadım. – perigrin
Ve ben bu son yorumu yayınladıktan sonra test paketine bakabileceğimi fark ettim ve [bir örnek] buldum (http://cpansearch.perl.org/src/BOBTFISH/MooseX-Storage-0.30/t/006_w_custom_type_handlers.t) tam olarak ne istersen. – perigrin