如何在Scala中定义常量成员?

sun*_*ant 3 scala

在Scala程序中定义诸如Pi或黄金比率之类的常量是正确的吗?

举个例子,在C#中我可以这样做:

class Example
{
    public readonly static Double GoldenRatio;

    static Example ()
    {
        GoldenRatio = (1.0 + Math.Sqrt (5.0)) / 2.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ion*_*tan 13

它只是一个val成员:

object Example {
  val GoldenRatio = (1.0 + Math.sqrt(5.0)) / 2.0
}
Run Code Online (Sandbox Code Playgroud)

另外,请查看有关常量Scala样式指南部分.

  • @Pooky 表达式立即被求值。如果您希望在第一次调用时对其进行评估,请使用“lazy val”;如果您希望每次调用时对其进行评估,请使用“def” (2认同)
  • @Pooky 如果您正在寻找编译时评估,您可以将其设为“最终 val”。请参阅 http://stackoverflow.com/a/11197537/303940。然而,在 GoldenRatio 的情况下,需要执行一些数学运算,您可能需要使用宏在编译时进行评估并将其转换为文字。 (2认同)