首次尝试Scala, 请问这个编译错误咋整?

查看:104
本文介绍了首次尝试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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆