地图未正确应用

时间:2016-03-05 10:49:48

标签: scala

在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

为什么我不正确地应用它?

2 个答案:

答案 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