La mia prima domanda su questo sito, vengo rapidamente. Sono uno sviluppatore, utilizzo principalmente Python e Perl. Sono appassionato e mi piace molto lo sviluppo.Come utilizzare i tipi :: Path :: Tiny with Moo
La mia prima domanda riguarda Perl, Moo e Type :: Tiny. Type :: Tiny è un ottimo modulo da utilizzare con Moo, ovviamente, ma tornerò su questo argomento in un'altra domanda.
ho scoperto Tipi :: Path :: Minuscoli un modulo coercizioni per Moose e Moo, così ho provato a fare una directory attributo nella mia classe come come descritto nel documentation, come il mio progetto era in Moose esso opera, ma dal momento che mi sono trasferito in Moo, non funziona più:
package MahewinBlogEngine::Common;
use strict;
use warnings;
use feature "state";
use Moo;
use Types::Path::Tiny qw/Path AbsPath/;
use CHI;
use MahewinBlogEngine::Renderer;
use Type::Params qw(compile);
use Types::Standard qw(slurpy Object Str HashRef ArrayRef);
=attr directory
rw, required, Str. The directory contain articles.
=cut
has 'directory' => (
is => 'rw',
isa => AbsPath,
required => 1,
coerce => 1,
);
nel mio prove:
my $articles = MahewinBlogEngine->articles(directory => getcwd() . '/t/articles');
errore è:
Invalid coerce '1' for MahewinBlogEngine::Common->directory not a coderef or code-convertible object at /home/hobbestigrou/perl5/perlbrew/perls/perl-5.19.1/lib/site_perl/5.19.1/Method/Generate/Accessor.pm line 618.
Compilation failed in require at /home/hobbestigrou/perl5/perlbrew/perls/perl-5.19.1/lib/site_perl/5.19.1/Module/Runtime.pm line 317.
Compilation failed in require at /home/hobbestigrou/MahewinBlogEngine/lib/MahewinBlogEngine.pm line 8.
BEGIN failed--compilation aborted at /home/hobbestigrou/MahewinBlogEngine/lib/MahewinBlogEngine.pm line 8.
Compilation failed in require at ./benchmark.pl line 10.
BEGIN failed--compilation aborted at ./benchmark.pl line 10.
Questo è normale, perché con Moo la coercizione è un rifcodice così ho provato:
has 'directory' => (
is => 'rw',
isa => AbsPath,
required => 1,
coerce => sub { return "Path" }
);
errore è:
value "Path" did not pass type constraint "Path" (not isa Path::Tiny) (in $self->{"directory"}) at (eval 355) line 99.
Se non ho coerce:
value "/home/hobbestigrou/MahewinBlogEngine/t/articles" did not pass type constraint "Path" (not isa Path::Tiny) (in $self->{"directory"}) at (eval 355) line 89.
I' Mi dispiace per questa semplice domanda, devo essere stupida e perdere qualcosa, ma non vedo cosa mi sia sfuggito qualcosa nel doc.
Grazie
Condivide la directory bisogno di essere un 'Percorso :: oggetto Tiny'? ... 'coerce => sub {return Path :: Tiny-> new ($ _ [0])}'? – mob
Grazie funziona alla grande. – Hobbestigrou