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
个条件
我的程序收到一个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
个条件