6

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

const int myConst = 5 * 5;

myConst 作为文字 25 内联。是:

final val myConst = 5 * 5

等效还是有其他一些机制/语法?

4

2 回答 2

9

是的,final val是正确的语法,有丹尼尔的警告。然而,在适当的 Scala 风格中,你的常量应该是驼峰式,首字母大写。

如果您希望在模式匹配中使用常量,则以大写字母开头很重要。第一个字母是 Scala 编译器如何区分常量模式和变量模式。请参阅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
}
于 2012-06-25T21:21:07.743 回答
6

final val是这样做的方法。然后,如果可以,编译器会将其设为编译时常量。

阅读下面丹尼尔的评论,详细了解“如果可以”是什么意思。

于 2012-06-25T18:33:52.323 回答