如何创建我的函数将返回的私有字段

时间:2014-11-19 14:01:39

标签: scala

我的班级目前看起来像:

class WebConfig(config: Config) {

  def this() {
     this(ConfigFactor.load())
  }

  def dbPort = config.getInt("mysql.port")

}

当我调用dbPort时,我不喜欢它,它必须每次调用然后再转换配置。

所以我想创建私有字段并在构造函数中设置它们,因此调用dbPort只会返回私有字段的内容。

我该怎么做?

我尝试创建私有var但是我收到此错误:

 class WebConfig(config: Config) {
      private var _dbPort: Int
      def this() {
         this(ConfigFactor.load())

         _dbPort = config.getInt("mysql.port")
      }

      def dbPort: Int = _dbPort

    }

错误:

abstract member may not have private modifier

2 个答案:

答案 0 :(得分:2)

你不能写这个:

class WebConfig(config: Config) {

  def this() {
     this(ConfigFactor.load())
  }

  val dbPort = config.getInt("mysql.port")

}

它只会读取一次配置参数。

答案 1 :(得分:2)

您收到该错误是因为您的私有变量最初没有赋值,因此被视为抽象,抽象变量不能是私有的,因为它们无法被实现所需的子类访问它们。

要解决此问题,您可以为您的变量指定占位符值,如下所示:

private var _dbPort: Int = _

话虽如此,我认为vptheron和kululimpa的建议是可行的。