我有以下代码说明我想要实现但不编译...我想知道类型configMap
的{{1}}是否包含密钥值Map
,如果它确实得到布尔值。
"runOnGrid"
但是这不起作用,因为我无法做val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(value) : Option[Boolean] => value // <=== compiler error
case None => false
}
,即我被限制在通过值或类型进行匹配之间进行选择。为了实现这一目标,我需要更好的Scala功夫......有人可以建议吗?
更新:与此同时,我认为这种可怕的方式可以做到这一点
Some(value) : Option[Boolean]
更新:ConfigMap在Scalatest中定义为:
val runOnGrid = args.configMap.get(("runOnGrid") match {
case Some(value) => value.isInstanceOf[Boolean] && value.asInstanceOf[Boolean]
case _ => false
}
答案 0 :(得分:4)
你可以做这样的事情Some(value: Boolean)
Some
里面的值可以给出一个类型注释
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(value: Boolean) => value
case _ => false
}
答案 1 :(得分:2)
这个解决方法怎么样:
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(true) => true
case _ => false
}
答案 2 :(得分:0)
您收到编译时错误,因为您提到了case to case元素,删除它并且它将起作用,
所以改为,
Output : Directory/File Name : Dir1 Folder No : 1 Directory/File Name : Dir2 Folder No : 2 Directory/File Name : Dir3 Folder No : 3 Directory/File Name : Dir4 Folder No : 4 Directory/File Name : Dir5 Folder No : 5 Directory/File Name : Dir5a Folder No : 6 Directory/File Name : Dir5a_1 Folder No : 7 Directory/File Name : Dir5a_2 Folder No : 8 Directory/File Name : Dir5b Folder No : 9 Directory/File Name : Dir5b_1 Folder No : 10 Directory/File Name : Dir5b_2 Folder No : 11 Directory/File Name : Dir2a Folder No : 12 Directory/File Name : Dir2b Folder No : 13
答案 3 :(得分:0)
如果configMap
的类型为Map[String, String]
(当您从文件中读取配置文件时),则可以执行以下操作:
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some("true") => true
case Some("false") => false
case _ => false
}