Arrays Scala程序错误

Arrays Scala程序错误,arrays,scala,function,parameters,Arrays,Scala,Function,Parameters,当我在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");

当我在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更具体。要解决此问题,只需将t
qsort
定义更改为:

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

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

谢谢Daniel。你能从哪里开始学习scala程序吗。这提供了简单的教学方法。当然。那里有很多好书,或者只是边做边学。这取决于你是否懂其他语言。查看scala作者提供的coursera免费在线课程。
sort(qsort(:*)
就可以了。谢谢Kolmar,即使这样也解决了我:)遵循Daniel的答案更正确。我的评论更多的是关于晦涩语法的笑话。