对象在scala中不是值错误

Ale*_*ros 13 scala object map

在尝试在Scala中创建映射时,我收到以下错误消息:对象映射不是值

我正在使用的代码如下:

val myStringMap =  Map[String, String]("first" -> "A", "second" -> "B", "third" -> "C")
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么我不能创建这个地图,因为在查看Scala文档之后,在我看来我的代码的语法是正确的.

oxb*_*kes 23

当您看到错误"object is not value"时,这通常意味着范围内类型是Java类型 - 您可能正在java.util.Map范围内导入

scala> Map(1 -> "one")
res0: scala.collection.immutable.Map[Int,java.lang.String] = Map(1 -> one)
Run Code Online (Sandbox Code Playgroud)

scala> import java.util.Map
import java.util.Map

scala> Map(1 -> "one")
<console>:9: error: object Map is not a value
              Map(1 -> "one")
              ^
Run Code Online (Sandbox Code Playgroud)

请记住,在scala中,每个都带有一个(可选的)伴随对象,它是一个值.Java类不是这样.

  • 我不明白解决方案.那么,如何解决呢?:) (12认同)
  • 假设我没有影响内置类,但试图使用Java类.我应该怎么做才能得到*伴侣对象*? (3认同)

B C*_*ter 6

因为在 scala 中,每个本机 scala 类都带有一个(可选)伴生对象(允许从伴生对象进行赋值,如示例代码中所示),因此在将 java 类合并到 scala 代码中时,请始终记住通过调用构造函数来实例化该类,即。使用关键字“new”,从而创造一个价值。