Scala程序错误

Scala program error

当我在 cloudera quickstart 中 运行 下面的 scala 程序时,出现小错误,我无法纠正它。我是 scala 编程的初学者。

object sort {
  def sort(s:Array[Int] => Unit ){
    var a=new Array[Int](3);
    a(0)=1;
    a(1)=1;
    a(2)=1;
    s(a);
  }

  def qsort(a:Int*){
    println("qsort printed");
  } 

  def main(args:Array[String]){
    sort(qsort);
  }
}

我遇到错误

[cloudera@quickstart scalap]$ scalac sort.scala
sort.scala:12: error: type mismatch;
 found   : Seq[Int] => Unit
 required: Array[Int] => Unit
sort(qsort);
     ^
one error found

请告诉我解决方案。

很简单,您可以将 Array[Int] 的实例传递给需要 Seq[Int] 的函数,但反之则不行,因为 Array 比 Seq 更具体。要修复它,只需将 qsort 定义更改为:

def qsort(a:Array[Int]){
  println("qsort printed");
}

或更改排序定义以接收序列。任何一个都会使类型匹配。