【发布时间】:2017-05-15 05:20:09
【问题描述】:
我正在尝试使用模式匹配在 Scala 中查找列表的最后一个元素。我尝试了以下代码
def last[A](list: List[A]):A = list match {
case head :: Nil => head
case head :: tail => last(tail)
case _ => Nil
}
最后一种情况,即case _ => Nil,由于类型不匹配而引发错误(发现 Nil.type 需要 A)
我知道这个问题可以用其他方法解决,但是只使用模式匹配有没有办法解决这个问题?
由于列表是泛型类型,所以我无法将 Nil 替换为 A 类型的默认值,该值只能在运行时确定。
删除这一行:case _ => Nil 显然可以正常工作,但警告说如果出现 Nil 参数,它将失败。
那么,在这种情况下如何处理 Nil 参数?
【问题讨论】: