我正在使用Scala,并通过将谓词传递给过滤函数来解决某些问题。不是很大,但在谓词中我使用了一个名为doSearch的私有函数。
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) )
}
答案 0 :(得分:4)
我认为没有理由将doSearch
解除为函数。闭包将被翻译成一个匿名类,它将调用doSearch
- 几乎与调用某些方法的方式相同。 Java中的匿名ActionListener
。
但如果你真的想知道发生了什么,总会有反编译器...