मैं एक समारोह है कि एक पंजीकरण पृष्ठ पर कुछ जानकारी के माध्यम से लूप लिख रहा हूँ। लूप के भीतर मैं एक सरणी के आधार पर कार्यों को कॉल करने की कोशिश कर रहा हूं। मुझे जो समस्याएं आ रही हैं वह वास्तव में कार्यों को सही तरीके से कॉल कर रही है, क्योंकि मैं फ़ंक्शन नाम के हिस्से के रूप में एक चर को शामिल करने का प्रयास कर रहा हूं। validate_email, validate_uname, validate_pass:मैं कोल्डफ्यूज़न में फ़ंक्शन नाम के हिस्से के रूप में एक चर नाम को कैसे कॉल कर सकता हूं?
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
}
</cfscript>
तो, मैं तीन कार्य होते हैं:
यहाँ मेरी कोड है। अगर मैं एक writeoutput() में फेंक देता हूं, और फ़ंक्शन के परिणामों को आउटपुट करने का प्रयास करता हूं, तो वे काम नहीं करते हैं।
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
writeoutput('#func#');
}
</cfscript>
अब, मैं समझता हूँ कि जब आप writeoutput() का उपयोग कर रहे हैं, और आप एक समारोह कॉल कर रहे हैं, आप या तो अंत पर हैश प्रतीक की जरूरत है:
यहाँ कि कोड है। तो, चलो कहते हैं कि मैं इसे इस तरह लिख दें:
writeoutput('#validate_#func[2]#(#fields[i]#)#');
यह काम नहीं करेगा, क्योंकि दूसरा हैश प्रतीक बाहर रद्द समारोह कॉल।
writeoutput('#validate_email('[email protected]')#');
मैं कैसे उचित चर नाम के साथ 'ईमेल' (#validate_email ...) की जगह ले सकता है, और अभी भी समारोह काम है: यह समारोह अंततः कैसी दिखनी चाहिए, (ईमेल उदाहरण) है? मुझे आशा है कि मैंने इसे समझ में लाया है!
यह सीएफ में एक बग नहीं है, पीटर: इसे अभी तक लागू नहीं किया गया है। आप उस प्रभाव पर अपनी टिप्पणी को संशोधित करना चाहेंगे। अन्यथा एक स्पॉट-ऑन उत्तर। –
'Variables.Bob()' और 'चर [' बॉब ']()' के बीच कोई अंतर नहीं होना चाहिए - हालांकि, दूसरा एक त्रुटि फेंकता है। मैं ब्रैकेट नोटेशन में एक बग कहता हूं, एक अनुपूरक सुविधा नहीं। –
इसके लिए धन्यवाद। मुझे प्राप्त दोनों सुझाव महान काम करते हैं। मैं सीएफ के लिए नया हूं, इसलिए मैं भीड़ के साथ जा रहा हूं और दूसरे के बजाए इसका इस्तेमाल कर रहा हूं। दूसरा थोड़ा आसान है, लेकिन अगर इसमें कोई समस्या है तो मैं इसमें शामिल नहीं होना चाहता! एक बार फिर धन्यवाद! –