Scala中空列表的负责人
Head of empty list in Scala
我在 Scala 中创建了这个递归方法,它返回一个由另一个列表的所有不同元素组成的列表。
|
1
2 3 4 5 6 7 8 9 10 11 12 13 |
object es20 extends App{
def filledList:List[Int]=List() @scala.annotation.tailrec distinct(l.tail) |
但是,当我编译代码然后运行它时,会出现以下异常:
java.util.NoSuchElementException: 空列表头
我认为这个异常是由条件 if (l.isEmpty) 处理的。
如何修复代码?
在 Scala 中方法返回块的最后一个表达式。在您的情况下,您有三个表达式:两个 if 表达式导致单元和调用 distinct,因此每次调用 distinct 时都会执行检查,无论列表是否为空。
要修复它,您可以使用 if / else 构造,或在输入列表上进行模式匹配,或对 headOption 进行操作。
无论如何,我怀疑这段代码是否正确:您试图检查 \'filledList\' 上的某些内容,它始终为空
您可以通过在第二个 if 之前插入 else 来修复此特定错误。但是,正如另一个答案中提到的,您的代码不正确,并且无论如何都不会工作,您需要重写它。
另外,我理解,你只是想把这个函数写成一个练习(如果不是,就做 list.distinct),但我认为,对微不足道的线性问题实施二次解法从来都不是一个好的练习与.