2011-07-11 40 views
7

我在錄製中看到了這個代碼示例,並且想知道冒號語法的作用。我搜索的文檔,但我沒能找到它的任何信息:在ColdFusion中使用帶有命名參數的冒號

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

Yipes,這實際上是SO上的「引用」風格?它幾乎與普通文本沒有區別:/難怪我眨了兩下...... – Leigh

+0

@Leigh,我認爲你的LCD有一些顏色校準問題:D-在我的一臺筆記本電腦上我也很難看到背景顏色。 – Mohamad

-1

看起來像我的錯字。在ColdFusion中,您可以使用等號(=)而不是冒號來使用命名參數。

你的榜樣將成爲:

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

@肖恩科恩,我不認爲這是一個錯字。有幾個例子使用相同的格式,有人評論它是一件很酷的事情(冒號工作)。我想了解的是語法的含義。這只是另一種說法'arg = myValue'? – Mohamad

+1

我看過冒號在CF中的命名爲arg,但是,=是每個人都使用的。 – 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") /> 

就個人而言,我更喜歡=爲命名的參數。您可能還會注意到,如果您爲ColdFusion開發使用IntelliJ IDEA,但它們不能識別冒號語法,那麼爲了更好地解析,您需要使用=語法。我不能說其他IDE

+0

CFEclipse沒有IntelliJ IDEA相同的錯誤,我懷疑CFBuilder做。 –

相關問題