2013-07-28 75 views
24

我想在斯卡拉從像something.conf配置文件獲取列表與類型安全http://typesafehub.github.io/config/latest/api/index.html如何獲取列表與類型安全配置庫

在something.conf我設置參數:

mylist=["AA","BB"] 

,並在我的Scala代碼我做的:

val myList = modifyConfig.getStringList("mylist") 

簡單的配置參數,工作正常,但可能會有人給我如何提取一個列表的例子嗎?

乾杯!

+1

你能澄清這個問題嗎?看看API,你的代碼看起來很好。你應該在'myList'中找到一個'List [String]'。 –

+2

我的猜測是你期待'getStringList'的結果是一個Scala'List'。情況並非如此 - 「typesafe-config」是一個純Java庫,「getStringList」返回一個「java.util.List」的實現。 – ghik

回答

26

由於@ghik筆記,類型安全配置庫是的Java基礎,所以你得到一個java.util.List[String],而不是一個scala.List[String]。因此,無論你做一個轉換爲scala.List:你找一個Scala庫

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

或(可能不太彆扭)。該tools wiki鏈接至少這些維護庫:

(免責聲明:我不使用這些,所以你必須檢查他們支持你的類型和格式)

+2

我是新來的Scala :-),你是對的我把java.util.List和scala.List混合在一起。 'import collection.JavaConversions._ val myList = modifyConfig.getStringList(「mylist」)。toList'竅門。謝謝,我會檢查這些鏈接... – Martin

2

你可以試試我的斯卡拉包裝https://github.com/andr83/scalaconfig - 它支持直接從配置對象中讀取本地階類型。你的情況,它的外觀:

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

爲了記錄在案,因爲斯卡拉2.12 JavaConversions已被棄用,因此您可以:

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

這應該被標記爲正確的答案。 –

+0

這應該被標記爲「更多」正確的答案。 – bigdatamann

相關問題