[英]how to split and handle the array data in Scala in more functional way
我的邏輯很簡單。 我有以下文本行並將其轉換為Map:
a-1.0
b-text
c-
d-
e-2.0
請注意,值可以為null
。 這是我在Scala中執行此操作的方式:
var valueMap = scala.collection.mutable.Map[String,String]()
Source.fromFile("file/text").getLines().foreach(l=>{
var temp = l.split("-")
if(temp.size.equals(2)){
valueMap += (temp(0)->temp(1))
}else{
valueMap += (temp(0)->"")
}
})
它可以工作,但更像Java
方式,而不是Scala
方式。
任何人都可以以更多功能或更多Scala
方式幫助我實施嗎?
首先,不要為此使用foreach
。 foreach
是邪惡的。 請改用map
。
其次,不要使用var
。 val
在大多數情況下都可以。
第三,如果可以的話,不要使用可變結構。
考慮到這一點,可以將其轉換為以下內容:
val valueMap = Source.fromFile("file/text").getLines().map(line => {
line.split("-") match {
case Array(k, v) => (k, v)
case Array(k) => (k, "")
}
}).toMap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.