我有以下代码说明了我想要实现的目标,但它无法编译……我想确定configMapof 类型是否Map包含一个带值的键,"runOnGrid"以及它是否确实获得了它的布尔值。
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(value) : Option[Boolean] => value // <=== compiler error
case None => false
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我不能这样做,Some(value) : Option[Boolean]即我必须在按值或按类型匹配之间进行选择。为了实现这一点,显然我需要更好的 Scala 功夫……谁能给点建议?
更新:同时我想出了这种可怕的方式来做到这一点
val runOnGrid = args.configMap.get(("runOnGrid") match {
case Some(value) => value.isInstanceOf[Boolean] && value.asInstanceOf[Boolean]
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
更新:ConfigMap 在 Scalatest 中定义为:
class ConfigMap(underlying: Map[String, Any]) extends Map[String, Any] ...
Run Code Online (Sandbox Code Playgroud)
你可以Some(value: Boolean)在里面做类似这样的事情Some可以给一个类型注解
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(value: Boolean) => value
case _ => false
}
Run Code Online (Sandbox Code Playgroud)