我试图理解另一个程序员编写的Scala中的自定义迭代器。 我无法理解函数声明。 它们对我来说看起来像是匿名函数,但我根本无法完全绕过它们。
我做了一些关于Scala中的匿名函数的阅读,我发现这个资源[http://www.scala-lang.org/old/node/133]很有帮助,但我仍然无法阅读上述函数并完全理解它们。
以下是代码:
class MyCustomIterator(somePath: Path, someInt: Int, aMaxNumber: Int) {
def customFilter:(Path) => Boolean = (p) => true
// Path is from java.nio.files.Path
def doSomethingWithPath:(Path) => Path = (p) => p
}
我想了解这些了解这些功能。什么是回归类型?功能的主体是什么?
答案 0 :(得分:5)
(对于第一个def
)冒号后面和等号前面的部分是返回类型。所以,返回类型是:
Path => Boolean
表示功能签名。
现在,打破它,箭头左侧的项目是函数的参数。右侧是函数的返回类型。
因此,它返回一个接受Path
并返回Boolean
的函数。在这种情况下,它返回的函数将接受Path
并返回true
无论如何。
第二个def
返回一个接受Path
并返回另一个Path
的函数(在这种情况下为Path
)
示例用法是按如下方式使用它们:
iter.customFilter(myPath) //returns true
或
val pathFunction = iter.customFilter;
pathFunction(myPath) //returns true
iter.doSomethingWithPath(myPath) //returns myPath
或
val pathFunction = iter.doSomethingWithPath
pathFunction(myPath) //returns myPath