Arrays Scala程序错误
当我在cloudera quickstart中运行下面的scala程序时,我发现了一个小错误,我无法纠正它。我是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");
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的答案更正确。我的评论更多的是关于晦涩语法的笑话。