आप आत्मनिरीक्षण के लिए पूछ रहे हैं। ओओ ढांचे के बहुत सारे हैं जो इसे प्रदान करते हैं (उदा। Moose)। लेकिन, यदि आप फ़ंक्शन घोषित करने में सक्षम होना चाहते हैं और फिर इसे अपने प्रोग्राम के भीतर से जांचें, Function::Parameters जाने का एक उचित तरीका है।
Function::Parameters::Info सार से:
use Function::Parameters;
fun foo($x, $y, :$hello, :$world = undef) {}
my $info = Function::Parameters::info \&foo;
my $p0 = $info->invocant; # undef
my @p1 = $info->positional_required; # ('$x', '$y')
my @p2 = $info->positional_optional; #()
my @p3 = $info->named_required; # ('$hello')
my @p4 = $info->named_optional; # ('$world')
my $p5 = $info->slurpy; # undef
my $min = $info->args_min; # 4
my $max = $info->args_max; # inf
my $invocant = Function::Parameters::info(method() { 42 })->invocant; # '$self'
my $slurpy = Function::Parameters::info(fun {})->slurpy; # '@_'
:: जानकारी मॉड्यूल वास्तव में मूस का उपयोग कर कार्यान्वित किया जाता है में आत्मनिरीक्षण सुविधा।
स्रोत
2015-02-18 20:54:30
मुझे लगता है कि यह आपकी पहली वाक्य का अजीब शब्द था जो लोगों को गुमराह करता था। यह तब तक नहीं था जब तक आपने मेरे जवाब पर टिप्पणी नहीं की कि हमें एहसास हुआ कि आप वास्तव में एक सबराउटिन के प्रोटोटाइप को निर्धारित करने का एक तरीका चाहते हैं। यह तब तक करना एक अजीब बात है जब तक आप एक आईडीई या कुछ इसी तरह लिख नहीं लेते। क्या आप इसके लिए अपने कारण बताएंगे, क्योंकि एक बेहतर समाधान भी हो सकता है। मानक पर्ल 5 में पहली जगह प्रोटोटाइप नहीं है इसलिए लाने के लिए कुछ भी नहीं है। आप एक अलग भाषा का उपयोग कर बेहतर हो सकते हैं। – Borodin
धन्यवाद, यह अच्छी प्रतिक्रिया है और मैं खराब वाक्यांश प्रश्न के लिए क्षमा चाहता हूं। मेरा उपयोग केस किसी फ़ंक्शन का चयन करने के बाद वेब पेज पर गतिशील रूप से आवश्यक पैरामीटर प्रदर्शित करना है। फंक्शन :: पैरामीटर्स का स्वीकार्य उत्तर वही है जो मैं ढूंढ रहा था। – nando