在我正在编写的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 。