sub foo : method { shift->bar(@_) }
: method
का अर्थ क्या है?सब foo के लिए इस्तेमाल किया गया वाक्यविन्यास क्या है: विधि {shift-> bar (@_)}?
मैं इसे इस तरह से उपयोग नहीं किया है ...
sub foo : method { shift->bar(@_) }
: method
का अर्थ क्या है?सब foo के लिए इस्तेमाल किया गया वाक्यविन्यास क्या है: विधि {shift-> bar (@_)}?
मैं इसे इस तरह से उपयोग नहीं किया है ...
: method
function attribute वर्णन है। इतनी चिह्नित एक सबराउटिन "कोर ::% s" चेतावनी के रूप में हल की गई संदिग्ध कॉल को ट्रिगर नहीं करेगी।
से ysth की टिप्पणी:
चेतावनी होता है जब उप अंतर्निहित रूप में एक ही नाम है और यह & बिना और नहीं के रूप में एक विधि कॉल कहा जाता है; perl बजाय बिल्टिन का उपयोग करता है लेकिन एक चेतावनी देता है। : विधि चेतावनी quiets क्योंकि यह स्पष्ट रूप से इंगित करता है कि सब कभी भी एक गैर विधि के रूप में बुलाया जाने का इरादा नहीं था।
अद्यतन
इस कोड को सिर्फ विधि bar
जब foo
कहा जाता है कहता है:
sub foo : method { ## Mark function as method
shift->bar(@_) ## Pass all parameters to bar method of same object
}
अधिक विवरण:
: method
- यह दर्शाता है कि संदर्भित सबरूटीन एक विधि है । इतनी चिह्नित एक सबराउटिन "कोर ::% s" चेतावनी के रूप में हल की गई संदिग्ध कॉल को ट्रिगर नहीं करेगी।shift
- @_
से पहले पैरामीटर, जो हो जाएगा $self
->bar(@_)
हो जाता है - अन्य सभी मापदंडों के साथ एक ही कक्षा विधि bar
फोनआप यह पढ़ सकते हैं के रूप में:
sub foo : method {
my ($self) = shift @_;
return $self->bar(@_);
}
क्या करता है ' उप foo: विधि {shift-> बार (@_)} 'पूरी तरह से मतलब है? – asker
मैंने और विवरण जोड़ा है –
ऐसा लगता है कि यह अभी भी 'विधि' विशेषता के बिना काम करता है, है ना? – asker