在ColdFusion中使用带有命名参数的冒号

时间:2011-07-11 16:57:28

标签: syntax coldfusion

我在录音中看到了这个代码示例,想知道冒号语法的作用。我搜索了文档,但我无法找到任何信息:

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

我知道我们可以在CF9中使用冒号作为三元运算符:

result = (condition) ? true : false;

但在这种情况下,它看起来像是用于提供命名参数;那它在那里做什么?

3 个答案:

答案 0 :(得分:10)

  

<cfset result = obj.func(arg:value,thing:42) />我看着这个和   去了眨眼,眨眼 ......那不可能是对的!你不能使用冒号   命名参数!呃,你呢?好吧,显然你可以。

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

答案 1 :(得分: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") /> 

就个人而言,我更喜欢=用于命名参数。您可能还会注意到,如果您使用IntelliJ IDEA进行ColdFusion开发,他们无法识别冒号语法,那么为了更好地解析,您可能希望使用=语法。我不能代表其他IDE

答案 2 :(得分:-1)

看起来像是一个错字。在ColdFusion中,您将使用等号(=)而不是冒号来使用命名参数。

你的例子将成为:

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