मैं एक ColdFusion समारोह "foo" जो तीन आर्ग लेता है, और दूसरा दो वैकल्पिक हैं:कोल्डफ्यूज़न में फ़ंक्शन कॉल करते समय केवल कुछ वैकल्पिक तर्क कैसे निर्दिष्ट करें?
<cffunction name="foo" access="public" returntype="any">
<cfargument name="arg1" type="any" required="true" />
<cfargument name="arg2" type="any" required="false" default="arg2" />
<cfargument name="arg3" type="any" required="false" default="arg3" />
...
<cfreturn whatever />
</cffunction>
मैं foo कॉल करने के लिए, ARG1 और arg3 में गुजर चाहते हैं, लेकिन ARG2 बाहर हो जाता है। मुझे पता है कि यह संभव है अगर मैं cfinvoke
का उपयोग करके फ़ंक्शन को कॉल करता हूं, लेकिन यह वाक्यविन्यास वास्तव में वर्बोज़ और जटिल है। मैंने इन दो दृष्टिकोणों की कोशिश की है, न तो काम करता है:
<cfset somevar=foo(1, arg3=3) /> <!--- gives syntax error --->
<cfset somevar=foo(1, arg3:3) /> <!--- gives syntax error --->
इस प्रकार मैं आम तौर पर इसे करना पसंद करता हूं। मैं अनुमान लगा सकता हूं कि रनटाइम पर कौन से तर्क शामिल हैं। ब्लॉक के अंदर लपेटना अच्छा और आसान है। –
ale
जैसा कि अल का तात्पर्य है, आपको यह दिखाने के लिए अपने उदाहरण अपडेट करना चाहिए कि ArgumentCollection का एक बड़ा लाभ यह है कि यह आपको फ़ंक्शन पर भेजने से पहले, एक लचीली फैशन में structs को बनाने/कुशल बनाने में मदद करता है - आपके वर्तमान उदाहरण केवल एक लंबी हवा वाली हैं सभी नामित तर्कों का उपयोग करने का तरीका। :) –
यह भी ध्यान देने योग्य है कि आप नामांकित तर्कों और तर्कसंगत चयन को एकल फ़ंक्शन कॉल में मिश्रित कर सकते हैं। –