0

我正在使用 Scala 并通过将谓词传递给过滤函数来解决某些问题。没什么大不了的,但在谓词中,我使用了对名为 doSearch 的私有函数的调用。

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

我的基本原理是,将它作为高阶函数传递似乎是唯一的方法,因为 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) )

}
4

1 回答 1

4

我看不出为什么doSearch应该在这里提升到一个功能。闭包将被转换为将调用的某个匿名类doSearch- 几乎与您从ActionListenerJava 中的匿名调用某些方法的方式相同。

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

于 2012-10-09T08:49:10.627 回答