我正在尝试将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"))
}
}
答案 0 :(得分:1)
dataToPersist("fooKey" -> row)
相当于
dataToPersist.apply("fooKey" -> row)
这是用于从地图中检索元素的操作。
如果你想附加一个元素,你可以使用
dataToPersist += "fooKey" -> row
但您必须首先使类型保持一致:row
是immutable.Map
但dataToPersist
期望mutable.Map
作为值。您需要将row
设为mutable.Map
或更改预期的dataToPersist
类型。