相关疑难解决方法(0)

在Scala中,什么是"早期初始化程序"?

在Martin Odersky 最近发表的关于 Scala 程序员能力水平的文章中,在专家库设计师部分,他包含了术语"早期初始化者".

在Scala编程中没有提到这些.这些是什么?

scala

64
推荐指数
1
解决办法
1万
查看次数

Scala - vals的初始化顺序

我有这段代码从文件加载属性:

class Config {
  val properties: Properties = {
    val p = new Properties()
    p.load(Thread.currentThread().getContextClassLoader.getResourceAsStream("props"))
    p
  }

  val forumId = properties.get("forum_id")
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.

我已经尝试将初始化移动properties到另一个val中loadedProperties,如下所示:

class Config {
  val properties: Properties = loadedProps
  val forumId = properties.get("forum_id")

  private val loadedProps = {
    val p = new Properties()
    p.load(Thread.currentThread().getContextClassLoader.getResourceAsStream("props"))
    p 
   }
Run Code Online (Sandbox Code Playgroud)

}

但它不起作用!(properties在null中properties.get("forum_id")).

那为什么会这样?loadedProps引用时不评估properties

其次,这是初始化需要非平凡处理的变量的好方法吗?在Java中,我将声明它们的final字段,并在构造函数中执行与初始化相关的操作.

Scala中是否存在此方案的模式?

谢谢!

constructor scala final initialization immutability

9
推荐指数
2
解决办法
3612
查看次数

标签 统计

scala ×2

constructor ×1

final ×1

immutability ×1

initialization ×1