如何在scala中的对象中打印整数值?

时间:2016-12-29 09:31:01

标签: scala

object perMissing {
    def solution(A: Array[Int]): Int = {
        def findMissing(i: Int, L: List[Int]): Int = {
            if (L.isEmpty || L.head != i+1) {
                i+1   
                println(i+1)}
            else findMissing(i+1, L.tail)
        }
        if (A.length == 0) 1 
        else findMissing(0, A.toList.sorted)

    }
    solution(Array(2,3,1,5))
}

我是Scala世界的新手。我来自Python和C世界。

我们如何打印整数值,例如。用于调试?例如,如果我想在每次迭代中看到i的值。

我使用scalac编译代码并使用scala运行它。

1 个答案:

答案 0 :(得分:1)

根据findMissing函数的签名,它应返回Int。但是,如果查看该函数的实现,只有一个代码路径(即else部分)返回Int - 另一方面if部分不返回任何事情(除了Unit),因为对println的调用是该特定代码块的最后一行。要解决此问题,只需将增加的值放在块的末尾即可返回:

def findMissing(i: Int, l: List[Int]): Int = {
  val inc = i + 1
  if (l.isEmpty || l.head != inc) {
    println(inc)
    inc
  }
  else findMissing(inc, l.tail)
}

由于findMissing是尾递归的,您还可以使用@tailrec对其进行注释,以确保它将使用尾调用优化进行编译。