2011-07-11 37 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做。 –

相关问题