2

在 Scastie 网站上,以下代码在带有 Scala 2.11.12 的 Spark Shell 中直接工作,没有问题。但是在运行 Apache Toree 的 Jupyter Notebook 中,出现了一个奇怪的错误。

// polymorphic functions

def findFirst[A](as: List[A], p: A => Boolean): Int = {

  val listLength = as.length

  @annotation.tailrec
  def go(n: Int): Int = {

    if (n >= listLength) -1
    else if (p(as(n))) n
    else go(n + 1)

  }

  go(0)

}

def passFun(x: Int): Boolean = x == 2

val l: List[Int] = List(1, 2, 3)
// println("The findFirst of function is: ")
println(s"Answer is: ${findFirst(l, passFun)}")

在内核刚启动后首次执行此代码时没有错误。但是当执行相同的单元格时,立即显示以下错误:

答案是:1 a = 1 :28:错误:缺少方法 findFirst 的参数列表 未应用的方法仅在需要函数类型时才转换为函数。您可以通过编写findFirst _findFirst(_,_)代替findFirst. findFirst ^ lastException: Throwable = null findFirst: [A](as: List[A], p: A => Boolean)Int 1

重新启动内核时错误消失了。有人可以告诉我他们是否知道此问题的解决方案或原因吗?

4

0 回答 0