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")
}

Кажется, это работает нормально.

Я попытался переместить инициализациюproperties в другой вал,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 
   }

Но это нет работа! (properties нуль вproperties.get("forum_id") ).

С чего бы это? неloadedProps оценивается при ссылке?properties

Во-вторых, это хороший способ инициализации переменных, которые требуют нетривиальной обработки? На Java я бы их объявилfinal поля, и делать связанные с инициализацией операции в конструкторе.

Есть ли шаблон для этого сценария в Scala?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос