首次尝试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
阅读 2.3k
1 个回答

Many对象apply方法的返回类型不对,你试下下面代码


    object Many {

    def apply[A](as: A*): Many[A]=
        if (as.isEmpty) Empty
        else Cons(as.head, apply(as.tail: _*))

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进