我的程序收到scala地图,要求是验证此地图(键值对)。例如:验证键值,将其类型从字符串转换为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 _ => ("","")
}
} 像这样,代码增加了进行验证并将键/值转换为支持的值。 有没有更简洁的方法在Scala中为地图进行此验证?
此致
答案 0 :(得分:0)
根据我从您的问题中理解的内容,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
条件