यह कोड है:जब मैं इस प्रोटोटाइप पर्ल सबराउटिन में कोडेफ पास करता हूं तो मुझे सिंटैक्स त्रुटि क्यों मिल रही है?
sub function($&) {
my $param1 = shift;
my $code = shift;
# do something with $param1 and $code
}
अगर मैं इसे इस तरह से कॉल करने का प्रयास करता हूं:
function("whatever") {
print "i'm inside the coderef\n";
}
मुझे Not enough arguments for MyPackage::function at x.pl line 5, near ""whatever" { "
मिलता है। मैं कोड ब्लॉक के सामने sub
जोड़ने के बिना इसे कैसे कॉल कर सकता हूं?
यह पहली तर्क होने पर क्यों काम नहीं करता है? – Geo
@ जीओ, यह काम कर सकता है, लेकिन आपको और अधिक स्पष्ट होने की आवश्यकता है: 'फ़ंक्शन ("जो कुछ भी", सब {प्रिंट "मैं coderef \ n"} के अंदर हूं); 'नाम' ब्लॉक एक्सपीआर 'वाक्यविन्यास केवल तभी काम करता है अगर कोडेफ पहले आता है। – friedo
केवल इसलिए कि इसे इस तरह से डिजाइन किया गया था। मुझे संदेह है कि इसे पहली जगह में अनुमति देने का मुख्य कारण उपयोगकर्ताओं को सबराउटिन लिखने देना था जिसे अंतर्निहित फ़ंक्शंस कहा जा सकता है जो मानचित्र और grep जैसे कोड का एक छोटा सा स्निपेट लेते हैं, लेकिन कुछ भी लचीला शायद भ्रमित हो सकता है। – Sean