इस प्रश्न में मेरी धारणा यह है कि एक हस्ताक्षर जो मैं निर्दिष्ट करता हूं वह पूरी तरह से वर्णन करता है कि एक विधि स्वीकार करेगी। जाहिर है, मैं इसके बारे में गलत हूं, लेकिन मैं वैसे भी इसे प्राप्त करना चाहता हूं। अगर मैं हस्ताक्षर में इसे निर्दिष्ट नहीं करता हूं, तो मैं नहीं चाहता कि अन्य लोग इसे तर्क के रूप में प्रदान कर सकें कि यह कुछ करेगा।मैं एक पर्ल 6 हस्ताक्षर कैसे निर्दिष्ट करूं जिसमें सबकुछ शामिल है जो मैं स्वीकार करता हूं और बाकी सब कुछ छोड़ देता हूं?
मैं एक विधि के लिए एक एकल स्थिति पैरामीटर के साथ एक हस्ताक्षर बनाते हैं, और मुझे उम्मीद है कि यह केवल एकल स्थितित्मक तर्क स्वीकार करेगा। ,
class SomeClass {
method something (Int $n) { 'Ran something' }
}
put SomeClass.something: 137; # Ran something
put SomeClass.something: 137, :foo('bar'); # Ran something
लेकिन अगर मैं एक विधि है कि एक नामित पैरामीटर लेता है परिभाषित करते हैं, कि हर बार जब मैं इसे दूसरे को परिभाषित कहा जाता है: हालांकि, यह भी नाम वाले पैरामीटर बिना किसी शिकायत के स्वीकार करता है। इसके अलावा, हालांकि मुझे लगता है कि मैं कहा है यह जरुरी है कि एक foo
पैरामीटर नाम, यह आवश्यक नहीं है और यह अभी भी नाम वाले पैरामीटर है कि मैं निर्दिष्ट नहीं किया है स्वीकार करता है:
class SomeClass {
multi method something (Int $n) { 'Ran something' }
multi method something (Int $n, :$foo) { "Ran $foo" }
}
put SomeClass.something: 137; # Ran
put SomeClass.something: 137, :foo('bar'); # Ran bar
put SomeClass.something: 137, :bar('foo'); # Ran
तो, कुछ सवाल:
मैं एक हस्ताक्षर कैसे निर्दिष्ट करूं जिसमें सब कुछ शामिल है जिसे मैं स्वीकार करना चाहता हूं और बाकी सब कुछ छोड़ देता हूं?
मैं निकटतम मिलान हस्ताक्षर चुनने के लिए पर्ल 6 को कैसे मजबूर करूं?
पर्ल 6 किस तरीके से जांच करने का निर्णय लेता है?
मुझे लगता है कि यह https://rt.perl.org/Ticket/Display.html?id=130920 भी –
में कोई समस्या है, नहीं, यह डिज़ाइन और कार्यान्वित के रूप में काम कर रहा है, हालांकि मैं मानता हूं कि यह थोड़ा सा काउंटर- अंतर्ज्ञानी (और मुझे यह स्वीकार करना होगा कि इसे पूरी तरह से ग्रोक करने के लिए मुझे काफी समय लगा है और अभी भी यह सुनिश्चित नहीं है कि यह अधिक एलटीए होना चाहिए)। –
क्या आप कुछ दस्तावेज को इंगित कर सकते हैं? –