我正在尝试使用模式匹配在Scala中查找列表的最后一个元素。 我尝试了以下代码:
最后一种情况,即
我知道可以使用其他方法解决此问题,但仅使用模式匹配是否有解决方法?
由于列表是泛型类型,因此我无法将
删除这一行:
那么,如何处理这种情况下的Nil参数?
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参数?
val _ :+ last = List(1)
对我来说是有效的。 - Jasper-M:+ last
如何成为类型为A
的值吗?根据这个例子,我的期望是List[A]
。 - Sergii