ColdFusion支持常量吗?

ColdFusion支持常量吗?,coldfusion,constants,coldfusion-9,Coldfusion,Constants,Coldfusion 9,我正在使用ColdFusion 9,并且已经检查了文档,但是它是不明确的 (我有PHP背景,正在寻找类似PHP常量的东西) 谢谢不,ColdFusion没有常数。我认为在大多数情况下,开发人员只需设置一个变量,使用一些命名约定,例如变量名的大写字母,然后永远不会更改它的值。这并不像在其他语言中那样是一个常量,您必须注意不要更改该值(因为它不是一个真正的常量)。我以前做过这项工作,通常在应用程序范围内设置这些“常量”,以便它们随时可用 前段时间开了一家店。然而,它看起来已经被关闭和推迟 Adam

我正在使用ColdFusion 9,并且已经检查了文档,但是它是不明确的

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


谢谢

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

前段时间开了一家店。然而,它看起来已经被关闭和推迟


Adam Cameron和引用了相同的增强请求。

否,不是作为母语功能。链接到的页面中的关键点是“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解决方案那样简洁,这是我经常使用的解决方案,但它是另一种选择。

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);
}

有关更多信息,请参阅:

表示“ColdFusion不允许您为常量命名”的位意味着您无法创建自己的常量(使用PHP的define函数可以创建)。当然,您可以只使用变量和合适的编码准则,因为.Ah不知道
final
。尽管风格不同,但我的偏好是将
final
变量声明放在函数之外。否则,很容易将它们误认为局部变量。