chromatic's recent blog mi ha fatto incuriosire la subroutine di Moose has
. Stavo guardando il codice sorgente di Moose e ho notato che all'interno della subroutine 10 è stata decompressa una variabile $meta
da @_
. Da dove proviene $meta
? Ho iniziato a guado attraverso i vari moduli Moose e Class :: MOP. In molte subroutine, sembra che $meta
si trovi comunemente come primo argomento in @_
, anche se non è passato in modo specifico ad esso come argomento.
Edit: Ecco il codice sorgente originale per la has
subroutine:
sub has {
my $meta = shift;
my $name = shift;
Moose->throw_error('Usage: has \'name\' => (key => value, ...)')
if @_ % 2 == 1;
my %options = (definition_context => Moose::Util::_caller_info(), @_);
my $attrs = (ref($name) eq 'ARRAY') ? $name : [ ($name) ];
$meta->add_attribute($_, %options) for @$attrs;
}
+1 Grande esempio. Grazie. –