2013-07-28 12 views
24

próbuję w Scala, aby otrzymać listę z pliku konfiguracyjnego jak something.conf z TypeSafe http://typesafehub.github.io/config/latest/api/index.htmlJak uzyskać listę z Typesafe config biblioteki

W something.conf ustawić parametr:

mylist=["AA","BB"] 

iw moim kodu Scala zrobić:

val myList = modifyConfig.getStringList("mylist") 

Proste parametry konfiguracyjne działa dobrze, ale mógłby ktoś dać mi przykład jak wydobyć listę?

Pozdrawiam!

+1

można wyjaśnić kwestię? Patrząc na API, twój kod wygląda dobrze. Powinieneś znaleźć 'List [String]' w 'myList'. –

+2

Domyślam się, że oczekujesz, że wynikiem 'getStringList' będzie Scala' List'. Tak nie jest - "typesafe-config" to czysta biblioteka Java, a 'getStringList' zwraca implementację' java.util.List'. – ghik

Odpowiedz

26

jak @ghik notatki, biblioteka Typesafe Config jest Java oparty, więc masz java.util.List[String] zamiast scala.List[String]. Więc albo dokonać konwersji na scala.List:

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

lub (prawdopodobnie mniej niewygodne) spojrzeć na bibliotekę Scala. W tools wiki linki przynajmniej do tych prowadzonych bibliotek:

(Uwaga: nie używam tych, więc trzeba będzie sprawdzić, czy wspierają one swoje typy i formatu)

+2

Jestem nowy w Scali :-) i miałeś rację, mieszam java.util.List z scala.List. 'import collection.JavaConversions._ val myList = modifyConfig.getStringList (" mylist "). toList' Zrobił lewę. Dzięki i sprawdzę te linki ... – Martin

2

Możesz wypróbować moje opakowanie scala https://github.com/andr83/scalaconfig - obsługuje czytanie rodzimych typów scala bezpośrednio z obiektu config. W twoim przypadku to będzie wyglądać:

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

Dla przypomnienia, od Scala 2,12 JavaConversions są przestarzałe więc można:

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

To powinno być teraz oznaczone jako poprawna odpowiedź. –

+0

To powinno być oznaczone jako "bardziej" poprawna odpowiedź. – bigdatamann

Powiązane problemy