8

我正在使用 ColdFusion 9 并检查了文档,但它是模棱两可的。

https://helpx.adobe.com/coldfusion/developing-applications/the-cfml-programming-language/elements-of-cfml/constants.html

(我有 PHP 背景,正在寻找类似于 PHP 常量的东西)

谢谢

4

3 回答 3

21

不,ColdFusion 没有常数。我认为在大多数情况下,开发人员只是设置一个变量,使用一些命名约定,例如 ALL_CAPITALS 中的变量名,然后永远不要更改它的值。这并不是像其他语言那样真正的常量,您必须小心不要更改值(因为它不是真正的常量)。我之前已经这样做过,并且通常在应用程序范围内设置这些“常量”,以便它们随时可用。

不久前有一个增强请求打开。但是,它似乎已被关闭和推迟。

Adam Cameron去年曾在博客中提到过这件事,并引用了相同的增强请求。

于 2013-04-25T16:49:40.800 回答
11

不,不是作为母语功能。您链接到的页面中的关键位是“ColdFusion 不允许您为常量命名”

我认为该页面实际上是在谈论文字,而不是常量。

如果您想支持不可修改的常量,我认为您需要使用一个对象来封装这些值:

component displayname="constant values for my app" {
  property name="mailServer" default="127.0.0.1" getter=true setter=false
  property name="password" default="supersecret" getter=true setter=false
}

然后,您可以将其设置在您需要的任何范围内(例如应用程序或请求),然后调用 application.constants.getMailServer()

它不像@Miguel-F 解决方案那样简洁,这是我大部分时间使用的解决方案,但它作为另一种选择在这里。

于 2013-04-25T16:55:43.093 回答
2

ColdFusion 2018 及以上版本支持关键字final。Final 很像一个常量,除了它不必在声明时设置。一旦设置,就无法更改。

// This is good
function myExample(){
    final max=50;
    writeoutput("final variable is: " & max);
}


// This is bad
function myExample(){
    final max=50;
    max = 100
    writeoutput("final variable is: " & max);
}

有关详细信息,请参阅:https ://helpx.adobe.com/coldfusion/developing-applications/building-blocks-of-coldfusion-applications/object-orienting-programming-coldfusion.html#final

于 2020-10-18T04:10:33.523 回答