Se inizi a utilizzare , troverai MooseX::Types
di tuo gradimento. I tipi hanno automaticamente is_ $ type() e to_ $ type(). Questi sono per assicurarsi che tu inserisca i vincoli di tipo pass, o che il tuo input abbia una coercizione valida per il tipo. Mi piacciono anche per questi tipi di cose, perché puoi garantire che lo stato del tuo oggetto abbia i suddetti tipi senza costi aggiuntivi.
use Moose;
has 'foo' => (isa => MyType, is => ro);
sub _check_my_type {
my ($self, $type) = @_;
is_MyType($type);
};
Potrebbe mancare qualche supporto per i tipi di profonde/ricorsivi, ma se la vostra utilizzando questa roba in Perl moderno probabilmente stai "facendo male." Usa invece un oggetto che ha i suoi controlli di coerenza (come il mio sopra con MyType), e passa semplicemente l'oggetto.
fonte
2009-09-16 15:35:03
L'alce non è un cattivo suggerimento se è possibile utilizzarlo. Se non puoi, Mouse è Moose-light. Questo ti permetterà di controllare il tipo e alcune altre cose senza tutte le dipendenze di Moose e senza lo stesso successo in termini di compilazione. Per essere chiari, I <3 Moose, ma per CGI e simili non è sempre la scelta migliore. – mikegrb
Il mouse non viene sviluppato attivamente. È un progetto morto (per i documenti di Mouse.pm Usa Moose invece di Mouse.). Sfortunatamente, i documenti Mouse non lo suggeriscono nemmeno per CGI! Invece, dicono "Sebbene siano stati compiuti progressi significativi nel corso degli anni, la penalità del tempo di compilazione è un non-starter per alcune applicazioni molto specifiche: se stai scrivendo un'applicazione da riga di comando o uno script CGI in cui il tempo di avvio è essenziale, puoi non essere in grado di utilizzare Moose. Ti consigliamo invece di utilizzare HTTP :: Engine e FastCGI per quest'ultimo, se possibile. " http://rt.cpan.org/Public/Bug/Display.html?id=42203 –