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");
}
或更改排序定义以接收序列。任何一个都会使类型匹配。
当我在 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");
}
或更改排序定义以接收序列。任何一个都会使类型匹配。