Scala数组是Sequence的子类型

时间:2018-09-18 08:01:10

标签: scala

seq如何接受数组参数输入的doPrint函数。

def doPrint(x : Seq[Any]) : Unit ={
   x.foreach(println)
}

doPrint(List(1,32,4))
doPrint(Array(1,2,3,4,5,6))

列表是Seq的子类型,不是数组。它是如何工作的?

2 个答案:

答案 0 :(得分:3)

这要感谢隐式转换为WrappedArray

来自here(那里有很多例子):

  

Scala 2.8数组实现系统地使用了隐式   转换。在Scala 2.8中,数组不假装为序列。   不可能真的是因为a的数据类型表示   本机数组不是Seq的子类型。而是有一个隐式   数组和类实例之间的“包装”转换   scala.collection.mutable.WrappedArray,它是Seq的子类。

答案 1 :(得分:1)

数组存在两个隐式转换: scala.collection.mutable.ArrayOps scala.collection.mutable.WrappedArray

在第二个方法调用的情况下, Array 被隐式转换为 Seq 的子类型 WrappedArray