当我在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
请告诉我解决方案。
答案 0 :(得分:2)
很简单,您可以将Array [Int]的实例传递给期望Seq [Int]的函数,但反之亦然,因为Array比Seq更具体。要解决此问题,只需将qsort
定义更改为:
def qsort(a:Array[Int]){
println("qsort printed");
}
或更改sort的定义以接收序列。任何一个都会使类型匹配。