在Scala中,我有一种类型的方法:
HashMap[String, String]
这个变量:
var bestMatch = new HashMap[String, (String, Int)]
在方法结束时,我试图返回此值:
bestMatch.map((x, (y, count)) => (x, y))
但是,我收到错误:
Cannot resolve reference map with such signature
为什么我不正确地应用它?
答案 0 :(得分:3)
它应该是这样的:
bestMatch.map(tuple => ( tuple._1, tuple._2._1))
您不能将(String,Int)
元组的两个参数都作为lambda函数参数。您需要将元组用作一个元组。如果你写出你的参数类型,它就会变得更加清晰。
bestMatch.map((tuple: (String,(String,Int))) => ( tuple._1, tuple._2._1))
同样在您的情况下,使用mapValues
可能更好,因为您没有对密钥执行任何操作。然后你可以使用它:
bestMatch.mapValues(tuple => tuple._1)
如果你问我,哪个更具可读性。你甚至可以进一步说:
bestMatch.mapValues(_._1)
答案 1 :(得分:3)
你可以写
onLayoutChildren