在我正在编写的Scala代码中,我有一个Map[String, AnyRef]。当我尝试使用以下方法初始化Map时,Scala提示它期望使用Map[String, AnyRef],但值是Map[String, Any]:

val myMap: Map[String, AnyRef] =
  Map("foo" -> true, "bar" -> false)

我知道我可以改用以下内容:
val myMap: Map[String, AnyRef] =
  Map("foo" -> true.asInstanceOf[AnyRef], "bar" -> false.asInstanceOf[AnyRef])

我在范围上声明了以下内容:
implicit def booleanToAnyRef(value: Boolean): AnyRef = value.asInstanceOf[AnyRef]

但是编译器仍然提示。

编译器不应该使用隐式方法将原始 bool 值转换为AnyRef值吗?除了(丑陋的)x.asInstanceOf[AnyRef]以外,还有什么方法可以转换这些格式?

最佳答案

记录下来,正如其他答案所暗示的那样,最新的编译器会说:



最新的编译器将永远是一个比您以前所困扰并遇到麻烦的 friend 提供更好建议的 friend 。

10-04 10:13