繁体   English   中英

Scala:了解匿名函数语法

[英]Scala: understanding anonymous function syntax

我试图让由另一个程序员编写的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
}

我想了解这些,了解这些功能。 真正的返回类型是什么? 函数的主体是什么?

(对于第一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM