2011-07-11 18 views
7

में नामित तर्कों के साथ एक कोलन का उपयोग करके मैंने इस कोड का उदाहरण रिकॉर्डिंग में देखा और यह जानना चाहता था कि कोलन सिंटैक्स ने क्या किया था। मैं डॉक्स खोज की है, लेकिन मैं इस पर कोई जानकारी नहीं मिल पाई थी:कोल्डफ्यूजन

weather.subscribe(observer: application.observers.currentConditions);

मैं जानता हूँ कि हम त्रिगुट ऑपरेटरों के लिए CF9 में पेट का उपयोग कर सकते हैं:

result = (condition) ? true : false;

लेकिन में इस मामले में ऐसा लगता है कि इसका नाम नामित तर्क प्रदान करने के लिए किया जा रहा है; तो यह वहाँ क्या कर रहा है?

उत्तर

10

<cfset result = obj.func(arg:value,thing:42) /> मैं इस को देखा और झपकी, पलक ... यह सही नहीं किया जा सकता हो गया! आप नामों के लिए कॉलन का उपयोग नहीं कर सकते हैं! एर, क्या आप कर सकते हैं? खैर, जाहिर है आप कर सकते हैं।

http://corfield.org/blog/post.cfm/Learn_something_new_every_day_named_arguments

+0

कौन इस पर विश्वास नहीं कर सकता, आप या शॉन? ;) – Leigh

+0

यिप्स, वास्तव में एसओ पर "उद्धरण" शैली है? यह नियमित पाठ से लगभग अलग नहीं है:/कोई आश्चर्य नहीं कि मैं दो बार झपकी देता हूं ... – Leigh

+0

@Leigh, मुझे लगता है कि आपके एलसीडी में कुछ रंग अंशांकन समस्याएं हैं: डी - मेरे लैपटॉप में से एक को भी मुझे पृष्ठभूमि रंग देखना मुश्किल लगता है। – Mohamad

-1

मेरे लिए एक टाइपो जैसा दिखता है। कोल्डफ्यूज़न में आप एक बराबर चिह्न (=) का उपयोग नामांकित तर्कों के लिए एक कोलन नहीं करेंगे।

आपका उदाहरण बन जाएगा:

weather.subscribe(observer = application.observers.currentConditions); 
+0

@ सेन कोयने के लिए बात नहीं कर सकता, मुझे नहीं लगता कि यह एक टाइपो है। ऐसे कई उदाहरण थे जो समान प्रारूप का उपयोग करते थे, और किसी ने इसके बारे में टिप्पणी की थी कि यह एक अच्छी बात है (वह कॉलन काम करते हैं)। जो मैं समझने की कोशिश कर रहा हूं वह वाक्यविन्यास का अर्थ है। क्या यह 'arg = myValue' कहने का एक और तरीका है? – Mohamad

+1

मैंने सीएफ में नामांकित तर्क के लिए कोलन कार्य देखा है, लेकिन हाँ, = हर कोई क्या उपयोग करता है। – Henry

+0

@ हेनरी, तो यह कहने का एक और तरीका है 'doSomething (myArg = myValue)'? – Mohamad

0

हाँ, आप दोनों का उपयोग करने की अनुमति है। मुझे लगता है कि यह वरीयता का मामला है। आप भी मिश्रण कर सकते हैं।

कुछ परीक्षण समारोह मज़ाक उड़ाया इस प्रयास करें और देखें,:

<cffunction name="testFunction" returntype="void" hint="I just spit out the arguments I get"> 
    <cfdump var="#arguments#" label="arguments"> 
</cffunction> 

<cfset testFunction(arg1:"hello",arg2:"world") /> 
<cfset testFunction(arg1="hello",arg2="world") /> 
<cfset testFunction(arg1:"I can mix",arg2="my named argument syntax") /> 

व्यक्तिगत रूप से, मैं नामित तर्क के लिए = पसंद करते हैं। आप यह भी ध्यान दे सकते हैं कि यदि आप अपने कोल्डफ्यूजन विकास के लिए इंटेलिजे आईडीईए का उपयोग करते हैं, तो वे कोलन सिंटैक्स को नहीं पहचानते हैं, इसलिए बेहतर पार्सिंग के लिए आप = वाक्यविन्यास का उपयोग करना चाहते हैं। मैं अन्य आईडीई

+0

CFEclipse में IntelliJ IDEA के समान बग नहीं है, और मुझे संदेह है कि CFBuilder या तो करता है। –

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