Почему конфигурация воспроизведения возвращает параметр

Я использовал конфигурацию typesafe и заметил, что если я вызову getString, он не вернет опцию.

Конфигурация воспроизведения, которая использует конфигурацию typesafe, всегда возвращает Options.

Это просто больше похоже на scala?

Кроме того, возможно ли это сделать с помощью конфигурации игры:

val c = config.atPath("myapp-prefix")

c.getString("some-key")

Мне понравилось, как с помощью конфигурации typesafe я мог перейти к определенному разделу в моей конфигурации и начать ссылаться на все оттуда.

Поскольку я просто хочу разбить свое приложение, если оно неправильно загрузило конфигурацию, мне не нужно иметь дело с параметрами.


person Blankman    schedule 21.01.2017    source источник
comment
Логика, которая будет применяться, если конфигурация не найдена, остается на реализацию (например, возврат параметра по умолчанию, жестко запрограммированного где-то), в вашем случае вы хотите сбой (что вы делаете, просто делая .get), в других случаях, возможно, вы не хочу разбиться.   -  person Ende Neu    schedule 22.01.2017


Ответы (1)


Если вы посмотрите на класс конфигурации Play, вы увидите, что это всего лишь тонкий слой над конфигурацией с безопасным типом, который проверяет, существует ли ключ, и возвращает параметр вместо исключения.

Это способ scala избежать исключений и позволяет вам задать разумные значения по умолчанию для вашей конфигурации.

Если вы посмотрите на scaladoc, есть поле underlying, которое дает вам доступ к объекту конфигурации typesafe.

Если вы хотите, чтобы ваше приложение «вылетало» в случае плохой конфигурации, просто используйте его.

В противном случае вы также можете использовать для понимания, чтобы получить вашу конфигурацию и вернуть сообщение об ошибке в случае отсутствия ключей; что-то типа:

for {
  subConfig <- config.getConfig("myKey")
  cfg1 <- subConfig.getString("k1")
  cfg2 <- subConfig.getString("k2")     
} yield {
  ... insert here the code using cfg1 and cfg2 ...
}

Если ключ отсутствует, это для понимания вернет вам значение None.

person Olivier Samyn    schedule 21.01.2017