2016-06-17 51 views
-5

我目前正試圖讀入斯卡拉自己。但我被卡在以下內容:斯卡拉,從一些(價值)獲得價值

val value: String = properties(j).attribute("value").toString 
print(value) 

xml屬性被讀取並轉換爲字符串,但被視爲「Some(value)」。我嘗試了幾件事情,但似乎沒有工作,當我自己創造的價值與「選擇:字符串」(這是常見的解決方案)。是否有人知道一個簡單的方法來擺脫「有些(」?

問候的 馬

+0

當XML沒有值屬性時會發生什麼? – Kolmar

+7

這對您來說可能是一個很好的閱讀,Option類型在Scala中非常常見,值得熟悉它:http://danielwestheide.com/blog/2012/12/19/the-neophytes-guide-to-斯卡拉部分-5的選項,type.html – alextsc

回答

4

的價值,我們在調用toString方法上是Option[String]型,而不是一個普通的String。當有一個價值,你會得到Some(value),而如果沒有價值,你會得到None

因此,你需要處理你可能會回來的兩種可能的情況。匹配:

val value: String = properties(j).attribute("value") match { 
    case None => ""//Or handle the lack of a value another way: throw an error, etc. 
    case Some(s: String) => s //return the string to set your value 
} 
0

嗨,感謝您的意見。 我把你的代碼做了一些小小的修改,開頭的變量node.seq, String, Some(String), Some[A]讓我很困惑。它適用於這個短版本:

val value = properties(j).attribute("value") match { 
       case None => "" 
       case Some(s) => s //return the string to set your value 
      }