2017-01-21 3 views
1

Ich benutzte die typsichere Konfiguration und ich bemerkte, wenn ich getString aufgerufen würde, würde es keine Option zurückgeben.Warum gibt die Wiedergabe-Konfiguration eine Option zurück

Die Wiedergabe-Konfiguration, die die typsichere Konfiguration verwendet, gibt immer Optionen zurück.

Ist das einfach mehr Scala wie?

Auch ist es möglich, dies mit Spiel Konfiguration zu tun:

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

c.getString("some-key") 

Ich mochte, wie mit typsichere Config ich zu einem bestimmten Abschnitt in meiner Config springen konnte und starten Sie alles von dort verwiesen wird.

Da ich meine App nur zum Absturz bringen will, wenn sie die Konfiguration nicht korrekt geladen hat, muss ich mich nicht mit Optionen beschäftigen.

+0

Die Logik, die angewendet wird, wenn die Konfiguration nicht gefunden wird, bleibt der Implementierung überlassen (wie zB das Zurückgeben eines Standardparameters, der irgendwo festgeschrieben ist), in Ihrem Fall wollen Sie abstürzen (was Sie gerade '.get' tun) Fälle vielleicht willst du nicht abstürzen. –

Antwort

1

Wenn Sie sich die Konfigurationsklasse von Play ansehen, sehen Sie, dass es nur eine dünne Schicht über der typsicheren Konfiguration ist, die prüft, ob ein Schlüssel existiert und eine Option anstelle einer Ausnahme zurückgibt.

Es ist die skalare Möglichkeit, Ausnahmen zu vermeiden, und ermöglicht es Ihnen, Ihrer Konfiguration vernünftige Standardwerte zu geben.

Wenn Sie sich die scaladoc ansehen, gibt es ein underlying Feld, das Ihnen Zugriff auf das typsichere Config-Objekt ermöglicht.

Wenn Sie Ihre Anwendung "Crash" im Falle einer schlechten Konfiguration machen wollen, verwenden Sie einfach diese.

Andernfalls könnten Sie auch zum Verständnis Ihre Konfiguration abrufen und eine Fehlermeldung im Falle fehlender Schlüssel zurückgeben; so etwas wie:

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

Wenn ein Schlüssel fehlt, das für das Verständnis kehren Sie einen None Wert.

Verwandte Themen