在Scala中如何声明编译时常量?与C#不同的是,如果在C#中声明:
是否有等效的机制/语法,还是有其他机制/语法?
const int myConst = 5 * 5;
myConst作为文字25进行内联处理。是否是:
final val myConst = 5 * 5
是否有等效的机制/语法,还是有其他机制/语法?
const int myConst = 5 * 5;
myConst作为文字25进行内联处理。是否是:
final val myConst = 5 * 5
final val
是正确的语法,参考 Daniel's caveats,但是在Scala编程风格中,常量应该使用首字母大写的驼峰命名方式。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
}
final val
是完成此操作的方式。如果编译器可以,它将使其成为编译时常量。
final val myConst: Int = 5
,它将不会被视为常数。 - Daniel C. Sobralfinal
修饰符必须存在,且不能给出类型注释。 - guymers