Scala:编译时间常数

时间:2012-06-25 18:32:24

标签: scala constants

如何在Scala中声明编译时常量?在C#中,如果你声明

const int myConst = 5 * 5;

myConst以字面值25表示。是:

final val myConst = 5 * 5

等价还是有其他机制/语法?

2 个答案:

答案 0 :(得分:8)

是的,final val是正确的语法,Daniel's caveats。但是,在正确的Scala样式中,你的常量应该是带有大写首字母的camelCase。

如果您希望在模式匹配中使用常量,则以大写字母开头很重要。第一个字母是Scala编译器如何区分常量模式和变量模式。参见Programming in Scala的第15.2节。

如果val或单个对象不以大写字母开头,要将其用作匹配模式,则必须将其括在反引号中(``

x match {
  case Something => // tries to match against a value named Something
  case `other` =>   // tries to match against a value named other
  case other =>     // binds match value to a variable named other
}

答案 1 :(得分:5)

final val是这样做的方法。如果可以,编译器将使它成为编译时常量。

请阅读以下丹尼尔的评论,了解“如果可以”的含义。