Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 倒数第二个配对案例_List_Scala_Recursion_Pattern Matching - Fatal编程技术网

List 倒数第二个配对案例

List 倒数第二个配对案例,list,scala,recursion,pattern-matching,List,Scala,Recursion,Pattern Matching,倒数第二个元素位于列表中最后一个元素之前 在第一种情况下,我们有一个包含2个元素的列表。基本情况是什么 第二种情况,我们将递归调用列表尾部的相同方法。对于每个递归调用,列表中的元素数量将减少 最后一个案例是什么?第三种情况何时发生 如果初始列表中的元素少于2个,则会出现最后一种情况。因此,正如您自己解释的,如果列表中有两个元素,则第一种情况匹配 否则,如果有一个或多个,是否属于第二种情况 还剩下什么?最后一个案例匹配空列表。如果没有要切掉的第一个元素,它将通过第二个元素落下,并命中最后一个元素。

倒数第二个元素位于列表中最后一个元素之前

在第一种情况下,我们有一个包含2个元素的列表。基本情况是什么

第二种情况,我们将递归调用列表尾部的相同方法。对于每个递归调用,列表中的元素数量将减少


最后一个案例是什么?第三种情况何时发生

如果初始列表中的元素少于2个,则会出现最后一种情况。

因此,正如您自己解释的,如果列表中有两个元素,则第一种情况匹配

否则,如果有一个或多个,是否属于第二种情况

还剩下什么?最后一个案例匹配空列表。如果没有要切掉的第一个元素,它将通过第二个元素落下,并命中最后一个元素。如果愿意,您可以将
保留在那里,或者引发其他异常。或者只需做
l.head
(它会为您抛出)


我想,您编写这个函数只是为了练习,但我还是想提一下:您所做的相当于
l.init。最后

是的,它是空列表,您只能抛出异常。空列表或只有一个元素的s列表的倒数第二位是什么?确实没有,所以您可以抛出一个异常,或者不重新调整Int,而是返回一个选项[Int]。因此最好替换case=>???通过案例>=>选项[INT]?@ USE90399,这取决于您认为最好的做法,但在函数编程中,是不是抛出异常。最后的代码是这样的
def penultimate(l:List[Int]):Int = l match{
    case x::y::Nil => x
    case x::tail => penultimate(tail)
    case _ => ???
}