Scala调试这个递归示例

问题描述 投票:0回答:1
def append[T](xs: List[T], ys: List[T]): List[T] =
    println(xs)
    xs match {
        case List() => ys
        case x :: xs1 => x :: append(xs1, ys)
    }

append(List(1,2), List(3,4));

所以println(xs)代码不会运行。我基本上想看看当xs1只是一个单元素数组时会发生什么。但是我怎么能这样做呢?我基本上想看看这个单元素列表是否被解构为单个元素,而xs1就像下一个传递中的null[]

Scala有哪些调试器?我该如何使用它们?为什么println(xs)不起作用?

scala debugging
1个回答
0
投票

你错过了一对大括号:

def append[T](xs: List[T], ys: List[T]): List[T] = {
    println(xs)
    xs match {
        case List() => ys
        case x :: xs1 => x :: append(xs1, ys)
    }
}

scastie是尝试小代码片段的好方法。

如果您使用的是IntelliJ,那么如何设置调试有一个很棒的answer

© www.soinside.com 2019 - 2024. All rights reserved.