地图上地图的scaladoc

地图上地图的scaladoc,scala,scala-collections,Scala,Scala Collections,根据map对象上map方法的scaladoc,它应该返回一个新映射: def map [B] (f: ((A, B)) ⇒ B) : Map[B] 返回将给定函数f应用于此映射的每个元素并收集结果后生成的新映射 但事实并非如此: scala> val countries = Map("NO" -> "Norway", "US" -> "United States", "DE" -> "Germany") countries: scala.collect

根据map对象上map方法的scaladoc,它应该返回一个新映射:

 def   map  [B]  (f: ((A, B)) ⇒ B)  : Map[B]   
返回将给定函数f应用于此映射的每个元素并收集结果后生成的新映射

但事实并非如此:

scala> val countries = Map("NO" -> "Norway", "US" -> "United States", "DE" -> "Germany")
countries: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map((NO,Norway), (US,United States), (DE,Germany))

countries map { _._1 }
res4: scala.collection.immutable.Iterable[java.lang.String] = List(NO, US, DE)

不过,这种行为正是我所期望的。那么,是文档错误,还是我遗漏了什么?

您读取了错误的映射函数

def映射[B]f:A,B⇒ B:地图[B]

但您正在使用:

def map[B,那]f:A,B⇒ Bimplicit bf:CanBuildFrom[Map[A,B],B,That]:那

因为您返回的是一个字符串,所以使用的不是第一个字符串,而是第二个字符串。为此,ScalaDoc说:


将给定函数f应用于此映射的每个元素并收集结果而产生的新类型集合。

您读取的映射函数错误

def映射[B]f:A,B⇒ B:地图[B]

但您正在使用:

def map[B,那]f:A,B⇒ Bimplicit bf:CanBuildFrom[Map[A,B],B,That]:那

因为您返回的是一个字符串,所以使用的不是第一个字符串,而是第二个字符串。为此,ScalaDoc说:

将给定函数f应用于此映射的每个元素并收集结果后产生的新类型集合。

Scaladoc的@usecase添加是相当仓促地构思和实现的,并且有一些折痕。在这种情况下,用例是在Scaladoc中为TraversableLikemap定义的:

$Coll使用scala.collection.Map中定义的值替换为简单文本替换

对此我们能做些什么?也许文本替换的结果可以进行类型检查,这将排除这些边缘情况。

Scaladoc中@usecase的添加是相当仓促地构思和实现的,并且有一些缺陷。在这种情况下,用例是在Scaladoc中为TraversableLikemap定义的:

$Coll使用scala.collection.Map中定义的值替换为简单文本替换


对此我们能做些什么?也许可以对文本替换的结果进行类型检查,这样可以排除这些边缘情况。

您在文档中的何处找到它?这里有点不同。这可能是Scala版本之间的差异。您在文档中的什么地方找到的?这里有点不同。也许这是Scala版本之间的差异。这有点道理。但我认为文档在这一点上可能更清晰,因为本应简化对这些复杂方法签名的理解的用例实际上使其在本例中更加混乱。结果是直观的,这可能是最重要的。它们都是相同的功能。正如追溯词所指出的,更简单的一个是一个不正确的@usecase。这有点道理。但我认为文档在这一点上可能更清晰,因为本应简化对这些复杂方法签名的理解的用例实际上使其在本例中更加混乱。结果是直观的,这可能是最重要的。它们都是相同的功能。正如追溯词所指出的,更简单的一个是不正确的@usecase。
@usecase def map[B](f: A => B): $Coll[B]
/**
 *  @define Coll Map
 *  @define coll map
 */
object Map extends MapFactory[Map]