Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 为什么在GenericTraversableTemplate上声明Flatte而不是TraversableLike?_Generics_Scala_Scala 2.8_Scala Collections - Fatal编程技术网

Generics 为什么在GenericTraversableTemplate上声明Flatte而不是TraversableLike?

Generics 为什么在GenericTraversableTemplate上声明Flatte而不是TraversableLike?,generics,scala,scala-2.8,scala-collections,Generics,Scala,Scala 2.8,Scala Collections,TraversableLike.flatMap的签名如下: def flatMap[B, Th](f : (A) => Traversable[B])(implicit bf : CanBuildFrom[Repr, B, Th]) : Th GenericTraversableTemplate.flatte的签名为: def flatten[B](implicit asTraversable : (A) => Traversable[B]) : CC[B] 为什么后一种方法(

TraversableLike.flatMap
的签名如下:

def flatMap[B, Th](f : (A) => Traversable[B])(implicit bf : CanBuildFrom[Repr, B, Th]) : Th
GenericTraversableTemplate.flatte
的签名为:

def flatten[B](implicit asTraversable : (A) => Traversable[B]) : CC[B] 
为什么后一种方法(在我看来,它与
flatMap
的区别仅在于变换器函数是
隐式的
)不能在
上定义为:

def flatten[B, Th](implicit asTraversable: (A) => Traversable[B], 
                   implicit bf : CanBuildFrom[Repr, B, Th]) : Th

这一定是有原因的吗?

我认为答案在于源代码:

def flatten[B](implicit asTraversable: A => /*<:<!!!*/ Traversable[B]): CC[B]
def展平[B](隐式可转换:A=>/*

flatte
的隐式参数实际上应该是
Scala 2.7或2.8?集合库在2.8中进行了大量修改。我不仅将问题标记为2.8,而且它引用了2.7中甚至不存在的可遍历特性!