2011-11-14 10 views
6

पायथन में *args सम्मेलन है, मुझे आश्चर्य है कि क्या CF9 कुछ समान समर्थन करता है।क्या कोल्डफ्यूजन गतिशील तर्कों का समर्थन करता है?

यहाँ अजगर उदाहरण

>>> def func(*args): 
     for a in args: 
       print a, "is a quality argument" 


>>> func(1, 2, 3) 
1 is a quality argument 
2 is a quality argument 
3 is a quality argument 
>>> 

उत्तर

10

हाँ, CFML जब तक यह उपयोगकर्ता परिभाषित कार्यों का समर्थन किया है के लिए गतिशील तर्क का समर्थन किया है के रूप में सुलभ हैं।

सभी तर्क, चाहे स्पष्ट रूप से परिभाषित किए गए हैं, या परिभाषित किए बिना पारित किए गए हैं, तर्क स्कोप में मौजूद हैं।

तर्क स्कोप को सरणी और संरचना (कुंजी/मान) दोनों के रूप में माना जा सकता है।

function func() 
{ 
     for (a in arguments) 
       WriteOutput(arguments[a] & "is a quality argument"); 
} 

ध्यान दें कि इस उदाहरण में a कुंजी नाम, नहीं मूल्य है, इसलिए क्यों arguments[a] प्रयोग किया जाता है:


यहाँ अपने उदाहरण के सबसे करीब बराबर है, स्क्रिप्ट सिंटैक्स का उपयोग है।

कोड के रूप में इलाज किया जा करने के लिए, ऊपर स्क्रिप्ट या तो <cfscript> .. </cfscript> टैग के भीतर, या वैकल्पिक रूप एक component { .. } एक .cfc फाइल के अंदर ब्लॉक के अंदर होना चाहिए।


यहाँ टैग संस्करणों की एक जोड़ी, के लिए/पाश में करने के लिए पहली बराबर है:

<cffunction name="func"> 
    <cfloop item="a" collection=#Arguments#> 
     <cfoutput>#Arguments[a]# is a quality argument</cfoutput> 
    </cfloop> 
</cffunction> 


और यह एक आप मूल्य सीधे का उपयोग करने की अनुमति देता है (अर्थात

function func() 
{ 
    loop index="a" array=Arguments 
    { 
     WriteOutput(a & 'is a quality argument'); 
    } 
} 

* Railo करने के लिए दो मुक्त स्रोत विकल्प में से एक है:

<cffunction name="func"> 
    <cfloop index="a" array=#Arguments#> 
     <cfoutput>#a# is a quality argument</cfoutput> 
    </cfloop> 
</cffunction> 


Railo * CFML में, यह पिछले उदाहरण के रूप में स्क्रिप्ट में व्यक्त किया जा सकता है: a यहाँ मूल्य) है एडोब कोल्डफ्यूजन, दूसरा Open BlueDragon है।

+2

मैं कर रहा हूँ मुसीबत काम करने के लिए अपने पिछले उदाहरण हो रही ... त्रुटि मैं हो रही है 'समारोह कीवर्ड फंक्शन declaration.' में याद आ रही है ... कोई सुझाव है? – John

+0

यह पहला उदाहरण ब्लॉक के भीतर –

+2

' पाश सूचकांक = "एक" की आवश्यकता होगी // GitHub: सरणी = Arguments' मैं कभी नहीं इस देखा है, इस Railo या कुछ – Henry

2

हाँ, तर्क एक सरणी "तर्कों" कहा जाता है के रूप में कार्य में पारित कर दिया जाता है। इसके अलावा आप एक फ़ंक्शन में "argumentCollection" नामक एक सरणी में पास कर सकते हैं। गतिशील तर्क के साथ

public void function myFunct(){ 
    var myVar = ""; 

    if(arrayLen(arguments)){ 
     myVar = arguments[1]; 
    } 
} 

लागू कार्य:

public void function myFunction(String arg1){ 
    var secondArgument = ""; 

    if(arraylen(arguments) > 1){ 
    secondArgument = arguments[2]; 
    } 
} 

myFunction("Hello","World"); 
+0

मैंने सोचा था कि सीएफ सूचकांक 1 पर शुरू कर दिया? क्या इस मामले में यह अलग है? ** संपादित करें ** पहले को भी न भूलें =)। – John

+0

आप सही हैं, हाल ही में बहुत अधिक जावास्क्रिप्ट लिख रहे हैं :-) – bittersweetryan

+0

आप नामांकन तर्कों की संरचना के रूप में तर्क को भी पारित कर सकते हैं। 'MyFunc (argumentCollection = {foo =" हैलो ", बार =" शब्द "}' –

0

पर कैसे निर्भर करता है:

myFunc("hello","world"); 
    OR 
myFunc(argumentCollection=["Hello","World"]); 

इसके अतिरिक्त आप तर्क इस तरह से विस्तार कर सकते हैं तर्क और तर्क है कि नामित तर्क से बाहर हैं नामित किया है फ़ंक्शन को तर्क कहा जाता है कि एक संरचना में निहित हो सकता है जिसमें उनकी स्थिति (1 आधारित इंडेक्स) से संबंधित संख्यात्मक कुंजी या तर्क के साथ एक संरचना में कुंजी के रूप में ।

यदि आप इस तरह के फ़ंक्शन को कॉल करते हैं;

func(1, "foo"); 

तो तर्क तर्क के रूप में सुलभ हो जाएगा [1] और तर्क [2]

समारोह नामित बहस में गुजर या argumentCollection का उपयोग कर उदाहरण के लिए, कहा जाता है अगर;

func(foo=1, bar="foo"); 

तो तर्क तर्क [ "foo"] और तर्क [ "बार"]

संबंधित मुद्दे