2011-07-11 12 views
7

Widziałem ten przykład kodu w nagraniu i chciałem się dowiedzieć, co zrobił składnia dwukropka. Szukałem w dokumentacji, ale nie byłem w stanie znaleźć żadnych informacji na jej temat:Używanie dwukropka z nazwanymi argumentami w ColdFusion

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

Wiem, że możemy użyć dwukropka w CF9 dla operatorów trójskładnikowych:

result = (condition) ? true : false;

ale w w tym przypadku wygląda na to, że służy do podawania nazwanych argumentów; więc co tam się dzieje?

Odpowiedz

10

<cfset result = obj.func(arg:value,thing:42) /> Patrzyłem na to i poszedł migać migać ... To nie może być prawda! Nie można używać dwukropków do nazwanych argumentów! Er, możesz? Cóż, najwyraźniej możesz.

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

+0

Kto nie może w to uwierzyć, ty czy Sean? ;) – Leigh

+0

Yipes, czyli tak naprawdę "cytat" na SO? Jest prawie nie do odróżnienia od zwykłego tekstu:/Nic dziwnego, że zamrugałem dwa razy ... – Leigh

+0

@Leigh, myślę, że twój wyświetlacz LCD ma pewne problemy z kalibracją kolorów: D - na jednym z moich laptopów również trudno jest dostrzec kolor tła. – Mohamad

-1

Wygląda mi jak literówka. W ColdFusion użyjesz znaku równości (=), a nie dwukropka do użycia nazwanych argumentów.

Twój przykład staną:

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

@Sean Coyne, nie sądzę, że to literówka. Było kilka przykładów, które używały tego samego formatu, a ktoś skomentował to, że jest fajny (ten dwukropek działa). Próbuję zrozumieć, co oznacza składnia. Czy jest to po prostu inny sposób mówienia "arg = myValue"? – Mohamad

+1

Widziałem pracę dwukropka dla nazwanego arg w CF, ale tak, = jest to, co wszyscy używają. – Henry

+0

@Henry, więc jest to po prostu inny sposób powiedzenia 'doSomething (myArg = myValue)'? – Mohamad

0

Tak, mogą korzystać zarówno. Myślę, że to kwestia preferencji. Możesz nawet mieszać.

Spróbuj i zobacz, wyśmiewali się jakąś funkcję testową:

<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") /> 

Osobiście wolę = nazwanych argumentów. Możesz również zauważyć, że jeśli użyjesz IntelliJ IDEA do rozwoju ColdFusion, nie rozpoznają one składni dwukropka, więc dla lepszego analizowania będziesz chciał użyć składni =. Nie mogę mówić za inne IDE.

+0

CFEclipse nie ma tego samego błędu co IntelliJ IDEA i wątpię, czy CFBuilder to robi. –

Powiązane problemy