【问题标题】:High-order function or just object method access?高阶函数还是只是对象方法访问?
【发布时间】:2012-10-09 08:38:54
【问题描述】:

我正在使用 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) )

}

【问题讨论】:

    标签: scala closures static-methods


    【解决方案1】:

    我认为没有理由将doSearch 提升为此处的函数。闭包将被转换为一些匿名类,该类将调用doSearch - 几乎与您调用某些方法的方式相同,例如Java中的匿名ActionListener

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

    【讨论】:

    • 闭包就是答案。反正我知道反编译器选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2012-02-22
    • 2017-04-07
    • 2014-02-16
    相关资源
    最近更新 更多