作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Scala(主要来自 Java 的背景)。我正在尝试围绕以下代码进行思考:
object Main {
def main(args : Array[String]) {
for (file <- filesEnding(".txt"))
println(file.getName)
}
private val filesHere = (new java.io.File(".")).listFiles
def filesMatching(matcher: String => Boolean) =
for (file <- filesHere; if matcher(file.getName))
yield file
def filesEnding(query: String) = filesMatching(_.endsWith(query))
/* Other matcher functions */
}
_
的值在每个匹配器函数中。我可以看到
filesEnding
使用参数
.txt
调用.该参数分配给
query
.
filesEnding
然后调用
filesMatching
具有与
String => Boolean
一致的参数功能。最后我可以看到
file.getName
最终取代
_
占位符。
file.getName
代替
_
.我无法在脑海中跟踪这段代码,而 Eclipse 调试器在这种情况下并没有多大帮助。有人可以告诉我这段代码中发生了什么吗?
最佳答案
_
只是制作匿名函数的简写:
_.endsWith(query)
fileName => fileName.endsWith(query)
matcher
至
filesMatching
.在该函数中,您可以看到调用
matcher(file.getName)
file.getName
调用匿名函数作为
_
参数(在显式示例中我称之为
fileName
)。
关于Scala _ 占位符(这段代码如何运作?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880407/
我是一名优秀的程序员,十分优秀!