2013-07-28 5 views
24

ich in Scala bin versucht, mit typsicher eine Liste aus einer Konfigurationsdatei wie something.conf zu bekommen http://typesafehub.github.io/config/latest/api/index.htmlWie eine Liste mit der Typesafe Config-Bibliothek erhalten

In something.conf ich den Parametersatz:

mylist=["AA","BB"] 

und in meinem Scala Code, den ich tun:

val myList = modifyConfig.getStringList("mylist") 

Einfache Konfigurationsparameter fein funktioniert aber könnte jemand geben Sie mir ein Beispiel, wie eine Liste zu extrahieren?

Prost!

+1

Können Sie die Frage klären? Mit Blick auf die API sieht Ihr Code gut aus. Sie sollten eine 'List [String]' in 'myList' finden. –

+2

Meine Vermutung ist, dass Sie erwarten, dass das Ergebnis von 'getStringList' eine Scala 'List' ist. Dies ist nicht der Fall - 'typesafe-config' ist eine reine Java-Bibliothek und' getStringList' gibt eine Implementierung von 'java.util.List' zurück. – ghik

Antwort

26

Als @ghik Notizen, die Config Typesafe Bibliothek ist Java basiert, so dass Sie eine java.util.List[String] anstelle eines scala.List[String] bekommen. Also entweder machen Sie eine Umwandlung in eine scala.List:

import collection.JavaConversions._ 
val myList = modifyConfig.getStringList("mylist").toList 

Oder (wahrscheinlich weniger umständlich) Sie suchen nach einer Scala Bibliothek. Die tools wiki Links zumindest auf diese beibehalten Bibliotheken:

(Haftungsausschluss: Ich benutze diese nicht, so dass Sie überprüfen müssen, werden, dass sie Ihre Art und Format unterstützen)

+2

Ich bin neu in Scala :-) und du hattest recht Ich mische java.util.List mit scala.List. 'import collection.JavaConversions._ val myList = modifyConfig.getStringList (" MeineListe "). toList' Hat den Trick gemacht. Danke und ich werde diese Links überprüfen ... – Martin

2

Sie können versuchen, meine Scala-Wrapper - unterstützt das Lesen nativer Scala-Typen direkt aus dem Config-Objekt. In Ihrem Fall wird es aussehen:

val myList = modifyConfig.as[List[String]]("mylist") 
14

Für das Protokoll, da Scala 2.12 JavaConversions veraltet sind, so können Sie:

import collection.JavaConverters._ 
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList 
+2

Dies sollte jetzt als die richtige Antwort markiert werden. –

+0

Dies sollte in der Tat als die "mehr" richtige Antwort markiert werden. – bigdatamann

Verwandte Themen