var imgResults:Map[String,String] = null
val previewList= LitmusService.checkStatus(testId)
var previewStatus = "false"
previewList.foreach (applicationId => {
if (previewList.length == 29) {
imgResults += (LitmusService.fetchResults(applicationId, "full_on"))
previewStatus = "true"
}
else if ((previewList.isEmpty().toString()).equalsIgnoreCase("true")) {
previewStatus = "falseAll"
}
else {
imgResults += (LitmusService.fetchResults(applicationId, "full_on"))
}
contentType = "application/json"
JsonUtility.toJSONString(Map("status" -> previewStatus, "images" -> imgResults))
})
fetchResults()函数返回Map [String,String]。我需要在foreach循环中添加它返回到地图imgResults的值。但是我收到了一个错误:
Error:(336, 50) type mismatch;
found : Map[String,String]
required: (String, String)
imgResults += (LitmusService.fetchResults(applicationId, "full_on"))
^
我该如何解决这个问题? 提前谢谢!
答案 0 :(得分:0)
您收到类型错误的原因是您尝试添加错误的类型。
fetchResults
返回Map
,+=
上的Map
运算符不会向另一个Map
添加Map
,而是添加一个键值配对myMap += (k -> v)
myMap += (k, v) // both valid
。
+=
这意味着您可以执行以下两项操作之一:
继续使用for(kv <- LitmusService.fetchResults(applicationId, "full_on")) {
imgResults += kv
}
++=
或者是超级懒惰并使用地图连接运算符imgResults ++= LitmusService.fetchResults(applicationId, "full_on")
并执行此操作:
++=
虽然请注意val a = Map('a -> 1, 'b -> 2)
val b = Map('c -> 3, 'd -> 4)
a ++= b // a is now Map('b -> 2, 'd -> 4, 'a -> 1, 'c -> 3)
没有添加到最后,但考虑到地图的性质,这并不重要:
null
另一件需要注意的事情。从来没有用val imgResults = scala.collection.mutable.Map[String,String]()
进行初始化,这是不安全的,这是非常糟糕的做法。相反,你应该用
{{1}}