【发布时间】:2016-12-10 14:42:08
【问题描述】:
完全是 Scala 初学者,现在只是想弄清楚基础知识。
作为教程的一部分,我正在尝试创建一个返回整数列表中最大元素的函数。为此,我(暂时)整理了以下代码:
def max(xs: List[Int]): Int =
if (xs.isEmpty)
throw new java.util.NoSuchElementException
else
findMax(xs.head, xs.tail)
def findMax(a: Int, b: List[Int]) {
if (b.isEmpty) return a
if (a > b.head)
findMax(a, b.tail)
else
findMax(b.head, b.tail)
}
但是,当我尝试编译它时,我收到第 5 行的类型错误。
[error] /scala/example/src/main/scala/example/Lists.scala:5: type mismatch;
[error] found : Unit
[error] required: Int
[error] findMax(xs.head, xs.tail)
我不得不承认我对这个错误消息有点困惑,因为我不明白编译器如何认为我正在尝试传递一个 Unit 类型,因为它的逻辑是确保在此之前 List 不为空行。
谁能帮助澄清这里的问题?
【问题讨论】: