2011-08-24 6 views

उत्तर

11

: methodfunction 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(@_); 
} 
+0

क्या करता है ' उप foo: विधि {shift-> बार (@_)} 'पूरी तरह से मतलब है? – asker

+0

मैंने और विवरण जोड़ा है –

+0

ऐसा लगता है कि यह अभी भी 'विधि' विशेषता के बिना काम करता है, है ना? – asker

संबंधित मुद्दे