2017-01-21 11 views
1

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

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

Это как раз больше scala?

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

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

c.getString("some-key") 

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

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

+0

Логика, которая будет применяться, если конфигурация не найдена, оставлена ​​для реализации (например, возвращать параметр по умолчанию, жестко запрограммированный где-нибудь), в вашем случае вы хотите сбой (который вы делаете только «.get'), в другом случаи, возможно, вы не хотите разбиваться. –

ответ

1

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

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

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

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

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

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

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