首次尝试Scala, 请问这个编译错误咋整?
本文介绍了首次尝试Scala, 请问这个编译错误咋整?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
正在学习Scala, 在编译下面的文件时,出错了。搞得我不知道如何修改,哪位可以帮忙? 先谢谢了!
文件名字为 Many.scala
sealed trait Many[+A]
case object Empty extends Many[Nothing]
case class Cons[+A](head: A, tail: Many[A]) extends Many[A]
object Many {
def apply[A](as: A*): List[A] =
if (as.isEmpty) Empty
else Cons(as.head, apply(as.tail: _*))
}
object MyApp extends App {
println("start to work...")
}
编译时,遇到如下错误
/home/hyan/tmp/scala/Many.scala:9: error: type mismatch;
found : Empty.type
required: List[A]
if (as.isEmpty) Empty
^
/home/hyan/tmp/scala/Many.scala:10: error: type mismatch;
found : List[A]
required: Many[?]
else Cons(as.head, apply(as.tail: _*))
^
two errors found
解决方案
Many对象apply方法的返回类型不对,你试下下面代码
object Many {
def apply[A](as: A*): Many[A]=
if (as.isEmpty) Empty
else Cons(as.head, apply(as.tail: _*))
}
这篇关于首次尝试Scala, 请问这个编译错误咋整?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文