【问题标题】:Add a Scala Map into another Scala Map将 Scala Map 添加到另一个 Scala Map
【发布时间】:2017-10-27 14:53:12
【问题描述】:

我正在尝试将 Scala Map 对象添加到另一个 Scala Map 对象中。

我找到了这个post,但我不明白。我做了一些谷歌搜索,但没有运气。

我创建了一个测试方法,需要帮助才能运行它。

这是代码:

package com.foo.bar

import collection.mutable.Map
import org.junit.Test
import org.junit.Assert;

class FooTest {

  @Test
  def testMap() {

    val row =  Map("fooKey" -> "fooValue", "barKey" -> "barValue")
    var dataToPersist = collection.mutable.Map[String, collection.mutable.Map[String, String]]()
    dataToPersist("fooKey" -> row)
    Assert.assertNotNull(dataToPersist("fooKey"))
    }
}

我在运行测试时收到此错误:

[ERROR] /Users/app/src/test/scala/com/foo/bar/FooTest.scala:14: error: type mismatch;
[INFO]  found   : (String, scala.collection.mutable.Map[String,String])
[INFO]  required: String
[INFO]     dataToPersist("fooKey" -> row)
[INFO]                            ^
[WARNING] one warning found
[ERROR] one error found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

谢谢!这是工作代码:

package com.foo.bar

import collection.mutable.Map
import org.junit.Test
import org.junit.Assert;

class FooTest {

  @Test
  def testMap() {

    val row =  Map("fooKey" -> "fooValue", "barKey" -> "barValue")
    var dataToPersist = Map[String, collection.mutable.Map[String, String]]()

    dataToPersist += "fooKey" -> row

    Assert.assertNotNull(dataToPersist("fooKey"))
    }
}

【问题讨论】:

    标签: scala collections


    【解决方案1】:
    dataToPersist("fooKey" -> row)
    

    等价于

    dataToPersist.apply("fooKey" -> row)
    

    这是用于从地图中检索元素的操作。

    如果你想附加一个元素,你可以使用

    dataToPersist += "fooKey" -> row
    

    但您必须首先使类型一致:rowimmutable.MapdataToPersist 期望 mutable.Map 作为值。您需要将row 设为mutable.Map 或更改dataToPersist 的预期类型。

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2012-01-26
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      相关资源
      最近更新 更多