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
Scala GenTraversableOnce[B]是数组[File]的父类型吗?_Scala_Inheritance - Fatal编程技术网

Scala GenTraversableOnce[B]是数组[File]的父类型吗?

Scala GenTraversableOnce[B]是数组[File]的父类型吗?,scala,inheritance,Scala,Inheritance,flatMap的Def: def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Array[B] 要在目录中创建文件的列表: def recursiveListFiles(f: File): Array[File] = { val these = f.listFiles these ++ these.filter(_.isDirectory).flatMap(f => recursiveListFiles(f)) } f

flatMap的Def

def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Array[B]
要在目录中创建文件的
列表

 def recursiveListFiles(f: File): Array[File] = {
    val these = f.listFiles
    these ++ these.filter(_.isDirectory).flatMap(f => recursiveListFiles(f))
  } 
flatMap
接受函数参数,函数参数也接受参数并返回 键入
GenTraversableOnce[B]

Array
&
gentraversableone
之间存在一个层次结构的公共类型,如果没有链接,那么
Array[File]
不应该是
gentraversableone[B]
的有效类型

看着
Array
API:

GenTraversableOnce
API:


似乎没有链接?

存在从到的隐式转换,它继承了
GenTraversableOnce

从ScalaDocs:

scala.Predef中存在两个隐式转换,它们经常 应用于数组:转换为scala.collection.mutable.ArrayOps (如上例第4行所示)和转换为 scala.collection.mutable.WrappedArray(的子类型 scala.collection.Seq)。这两种类型都提供了许多标准 在Scala collections API中找到的操作

至于两者的区别:

与上定义的所有操作一样,到ArrayOps的转换是临时的 ArrayOps返回一个数组,而WrappedArray的转换是 永久性,因为所有操作都返回一个WrappedArray


数组的链接scaladoc所述:

scala.Predef中存在两个经常应用于数组的隐式转换:一个转换为scala.collection.mutable.ArrayOps(如上面示例的第4行所示)和一个转换为scala.collection.mutable.WrappedArray(scala.collection.Seq的子类型)

Array
不继承自
GenTraversableOnce
,但在
scala.Predef
中有一个从
Array
ArrayOps
的隐式转换。而且
ArrayOps
确实继承自
GenTraversableOnce