Scala程序错误

时间:2015-10-09 22:51:21

标签: 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");
  } 

  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

请告诉我解决方案。

1 个答案:

答案 0 :(得分:2)

很简单,您可以将Array [Int]的实例传递给期望Seq [Int]的函数,但反之亦然,因为Array比Seq更具体。要解决此问题,只需将qsort定义更改为:

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

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