【发布时间】:2020-04-14 23:26:42
【问题描述】:
我有一个包含一些对的映射,我想为一个键分配一个默认值(布尔值),当我使用 getOrElse 时,一个键的默认值是一个字符串,我正在寻找一种方法来做到这一点一个整数或布尔值。
例如:
val someMap= Map("key1"->"value1", "key2"->3, "key3"-> true)
//let's see if I want to get the key `key4` with a default value of false using getOrElse
val key4= someMap.getOrElse("key4", false) //which I couldn't achieve.
【问题讨论】:
-
我用 Scala 2.13 运行了你的代码,它编译并运行没有任何问题,产生了
key4 :Any = false结果。 -
是的,当我在控制台中运行时,我得到了同样的结果,但是当我在我的代码中尝试时,它给了我这个。:错误:类型不匹配; [ERROR] found : Any [ERROR] required: Boolean
-
val someMap是Map[String,Any]类型,因此不能在任何需要Boolean的上下文中使用。 -
您始终可以通过添加
.asInstanceOf[Boolean]将结果转换为布尔值 - 根据您的用例,这可能不是一个好主意。 -
一开始就不应该有 Any。那是代码的味道。为什么需要
Map[String, Any]普通类(或案例类) 不能更好地工作?或者,您可能正在尝试对 JSON 之类的东西进行建模?
标签: scala scala-option