高阶函数还是只是对象方法访问?

时间:2012-10-09 08:38:55

标签: scala closures static-methods

我正在使用Scala,并通过将谓词传递给过滤函数来解决某些问题。不是很大,但在谓词中我使用了一个名为doS​​earch的私有函数。

doSearch方法是作为常规方法调用还是作为“指针”传递给方法并调用为高阶函数?

Mi的基本原理是将它作为高阶函数传递似乎是唯一的方法,因为doSearch对MyObject是私有的,但也可以从GlobalSet内部调用doSearch,因为调用是从MyObject内部执行的,因此可以访问它?

欢迎任何指向信息的指针,建议和网址!

object MyObject {

  private def doSearch(text: String, wordList: List[String]): Boolean = {
    // do the search
  }

  val thisSet: MySet = GlobalSet.allElements.filter( elem => doSearch(elem, myList) )

}

1 个答案:

答案 0 :(得分:4)

我认为没有理由将doSearch解除为函数。闭包将被翻译成一个匿名类,它将调用doSearch - 几乎与调用某些方法的方式相同。 Java中的匿名ActionListener

但如果你真的想知道发生了什么,总会有反编译器...