2012-10-09 22 views
0

我正在与Scala合作,并通过将谓词传递给过滤函数来解决某些问题。没什么大不了的,但在谓词中,我使用了一个名为doS​​earch的私有函数。高阶函数或只是对象方法访问?

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

Mi的基本原理是将它作为高阶函数传递看起来是唯一的方法,因为doSearch对MyObject是私有的,但也可以在GlobalSet中调用搜索,因为调用是从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

我看不出有任何理由doSearch这里应该提升到一个功能。闭包将被翻译成一些匿名的类,这个类将会调用doSearch - 几乎和你从某个方法调用某种方法的方式一样。 Java中的匿名ActionListener

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

+0

闭包是答案。无论如何,我知道反编译器选项。 –