在scala中声明一个全局变量

时间:2015-07-11 08:47:08

标签: scala

是否可以这种方式声明全局变量?

如果我运行此代码段,我将遇到错误

object Test {
  val value -> error on this line for declaration issue
  def run() {
    value  = ... 
  }
def main(args: Array[String]) {
    run()
  }

提前感谢。

3 个答案:

答案 0 :(得分:4)

理论上你可以使用 Trait 来做。 我不确定这是你需要的。

看起来像这样:

trait MyTestTrait {
  val value: String
}

object MyTest extends MyTestTrait {
  val value = "yo!"
  def run = println(value)
}

答案 1 :(得分:1)

不,那是不可能的。你应该这样做:

object Test {
  val value = ...
}

由于您的run()函数不带参数,因此value的内容也可以在没有它的情况下计算。

答案 2 :(得分:0)

您可以在 Scala 中添加 Java 类, 所以你可以创建一个类并将你的变量放在 static { } 方法中 并且您可以使用私有获取方法获取访问权限。

package com.test.config

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

public class ConfigurationManager {

    private static String myLink;
 
    public static String GetMyLink()
    {
        return myLink;
    }

    static {
        Config config = ConfigFactory.load();
        myLink = config.getString("com.test.myLink");
    }
}