मैं एक कमांड लाइन प्रोग्राम के पर्ल 6 कार्यान्वयन के साथ खेल रहा था जिसमें कई स्विच होते हैं। MAIN
पर हस्ताक्षर काफी शामिल था और थोड़ा गन्दा था।क्या मैं पर्ल 6 में हस्ताक्षर के रूप में एक स्टैंडअलोन हस्ताक्षर का उपयोग कर सकता हूं?
# possibly big and messy signature
my $sig;
BEGIN { $sig = :(Int $n, Int $m) };
multi MAIN ($sig) {
put "Got $n and $m";
}
MAIN
भले ही हस्ताक्षर MAIN
से पहले सेट कर दिया जाता हस्ताक्षर में चर नहीं देखता संकलित:
===SORRY!=== Error while compiling /Users/brian/Desktop/signature.p6
Variable '$n' is not declared
at /Users/brian/Desktop/signature.p6:7
मुझे लगा कि इस तरह की चीज संकलन समय के बाद विधियों को उत्पन्न करने और विभिन्न कारकों के आधार पर हस्ताक्षर चुनने के लिए आसान हो सकती है।
जो भी '(...) में है' है हस्ताक्षर, तो यह कभी काम नहीं करेगा। जिस तरह से आप यह करेंगे कम स्तर और कार्यान्वयन विशिष्ट होगा। मैं इसे एक सामान्य हस्ताक्षर करने की कोशिश करता हूं, और पार्स किए जाने के बाद हस्ताक्षर को बलपूर्वक बदल देता हूं। यह बहु प्रेषक को बदलने के लिए rigamarole को अनदेखा कर रहा है। –
फ़ंक्शन के अंदर चर के लिए "वैरिएबल घोषित नहीं किया गया" त्रुटियों को फेंकने के लिए, यह मैक्रो की तरह कुछ संकलित समय पर किया जाना होगा। दुर्भाग्यवश, पर्ल 6 के लिए योजना बनाई गई मैक्रो/स्लैंग कार्यक्षमता, अभी तक भौतिक नहीं हुई है। – smls
एक तरफ ध्यान दें: आप शीर्ष-स्तरीय दायरे में एक चर घोषित कर सकते हैं और BEGIN फ़ेज़र के ब्लॉक-कम रूप का उपयोग करके इसे एक वक्तव्य में BEGIN समय पर प्रारंभ कर सकते हैं: 'BEGIN my $ foo = ...; ' – smls