代码之家  ›  专栏  ›  技术社区  ›  Learn Hadoop

scala数组是序列的子类型

  •  0
  • Learn Hadoop  · 技术社区  · 6 年前

    seq如何接受数组参数input doprint函数。

    def doPrint(x : Seq[Any]) : Unit ={
       x.foreach(println)
    }
    
    doPrint(List(1,32,4))
    doPrint(Array(1,2,3,4,5,6))
    

    列表是子类型seq,而不是array。它是如何工作的?

    2 回复  |  直到 6 年前
        1
  •  3
  •   bobah    6 年前

    这要归功于对 WrappedArray .

    here (这里有许多例子):

    scala 2.8数组实现系统地使用隐式 转换。在scala 2.8中,数组不假装是序列。 不能真的是这样,因为 本机数组不是seq的子类型。相反,有一个隐式的 数组和类实例之间的“包装”转换 scala.collection.mutable.wrappedarray,它是seq的一个子类。

        2
  •  1
  •   Constantine    6 年前

    数组存在两个隐式转换: scala.collection.mutable.arrayops(缩放.collection.mutable.arrayops) scala.collection.mutable.wrappedarray(scala.collection.mutable.wrappedarray) .

    在第二个方法调用的情况下, 数组 被隐式转换为 菱形线 哪个是的子类型 SEQ .