chromatic's recent blog मुझे मूस सबराउटिन has
के बारे में उत्सुकता मिली। मैं मूस स्रोत कोड देख रहा था और देखा कि has
सबराउटिन के अंदर, वैरिएबल @_
से अनपॅक किया गया है। $meta
कहां से आता है? मैंने विभिन्न मूस और कक्षा :: एमओपी मॉड्यूल के माध्यम से wading शुरू कर दिया है। कई subroutines में, ऐसा लगता है कि $meta
आमतौर पर @_
में पहला तर्क के रूप में पाया जाता है, भले ही इसे विशेष रूप से तर्क के रूप में पास नहीं किया गया हो।
संपादित करें:
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 महान उदाहरण। धन्यवाद। –