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的子类型,不是数组。它是如何工作的?
答案 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 。