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

Syntax 在ColdFusion中使用带命名参数的冒号,syntax,coldfusion,Syntax,Coldfusion,我在录音中看到了这个代码示例,想知道冒号语法的作用。我搜索了文档,但找不到任何相关信息: weather.subscribeobserver:application.observer.currentConditions 我知道我们可以在CF9中使用冒号来表示三元运算符: 结果=条件?真:假 但在本例中,它似乎被用来提供命名参数;那它在那里干什么呢?在我看来像是打字错误。在ColdFusion中,将使用等号=而不是冒号来使用命名参数 你的例子是: weather.subscribe(observe

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

weather.subscribeobserver:application.observer.currentConditions

我知道我们可以在CF9中使用冒号来表示三元运算符:

结果=条件?真:假


但在本例中,它似乎被用来提供命名参数;那它在那里干什么呢?

在我看来像是打字错误。在ColdFusion中,将使用等号=而不是冒号来使用命名参数

你的例子是:

weather.subscribe(observer = application.observers.currentConditions);
我看着这个然后 眨眼,眨眼。。。那不可能是对的!你不能用冒号来表示 命名参数!呃,可以吗??嗯,显然你可以


是的,两种都可以使用。我认为这是一个偏好的问题。你甚至可以混合

试试看,模拟一些测试功能:

<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说话

@Sean Coyne,我不认为这是一个打字错误。有几个例子使用了相同的格式,有人评论说冒号工作很酷。我想理解的是语法的意思。这只是说arg=myValue的另一种方式吗?我在CF中见过冒号对命名的arg起作用,但是的,=是每个人都使用的。@Henry,所以这只是说doSomethingMyValue的另一种方式?谁不相信呢,你还是Sean;是的,这实际上是报价风格,对吗?它与普通文本几乎无法区分:/难怪我眨了两下…@Leigh,我想你的LCD有一些颜色校准问题:D-在我的一台笔记本电脑上,我也发现很难看到背景颜色。@Mohmamad-Duh!你是对的。在另一台机器上,它的发音要明显得多。在这个问题上,我只能看到它,如果我斜视真的努力;CFEclipse和intellijidea没有相同的bug,我怀疑CFBuilder也没有。