簡體   English   中英

如何以更實用的方式在Scala中拆分和處理數組數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM