Scala 地图验证

Scala map validation

我的程序收到一个scala map,要求是验证这个map(键值对)。例如:验证键值,将其类型从字符串转换为 int 等。在极少数情况下,我们也会在将映射传递到下层之前更新键。 并不总是需要更新此映射,但仅当我们检测到有任何不受支持的键或值时才需要更新。 我正在做这样的事情:

private def updateMap (参数: Map[String, String]): Map[String, String] = {

parameters.map{

  case(k,v) => k match { case "checkPool" =>


    (k, (if (k.contains("checkPool"))
      v match {
        case "1" => "true"
        case _ => "false"
      }
    else v))

  case "Newheader" => (k.replace("Newheader","header"),v)
  case _ =>(k,v)
  }


  case _ => ("","")
}

} 像这样,代码会增加以进行验证并将 keys/values 转换为支持的代码。 在 Scala 中是否有更简洁的地图验证方法?

此致

根据我从你的问题中了解到的,match case 可以作为你的解决方案

inOptions.map(kv => kv.keySet.contains(STR) match {
  case true => mutable.HashMap(STR_UPDT->kv.get(STR).get)
  case _ => kv
})

已编辑

由于您用更多要求更新了问题,简单的 if else 条件匹配似乎是最佳选择。

def updateMap(parameters: Map[String, String]): Map[String, String] = {
  parameters.map(kv => {
    var key = kv._1
    var value = kv._2
    if(key.contains("checkPool")){
      value = if(value.equals("1")) "true" else "false"
    }
    else if(key.contains("Newheader")){
      key = key.replace("Newheader", "header")
    }
    (key, value)
  })
}

您可以添加更多else if个条件