【发布时间】:2012-10-06 17:54:40
【问题描述】:
如何在下面的 scala 代码中访问文件名:
object FileMatcher {
private def filesHere = (new java.io.File("c:\\")).listFiles
def filesEnding(query: String) =
for (file <- filesHere; if file.getName.endsWith(query))
yield file.getName
def main(args: Array[String]) {
println(filesEnding(".js"))
}
}
我有一个 .js 文件,输出为:[Ljava.io.File;@df8f5e
我尝试将 'yield file' 更改为 'yield file.getName' 但结果相同。
我假设 println(filesEnding(".js")) 调用任何 def 'filesEnding' 产生的 toString 方法,这是正确的吗?
【问题讨论】:
-
什么是“相同的结果”?顺便说一句,在
if之后缺少(... -
@gilad hoch 我认为 scala 中的 if 语句有一个隐式的左括号和右括号,它们是可选的。我已经更新了我的问题,如果我使用括号作为 if 语句的一部分,输出是相同的
-
在 REPL 中尝试
if true 1 else 2。你会得到一个错误......所以(和)是必须的。当我添加它时为我工作。顺便说一句,你的意思是println(filesEnding(".js").mkString("\t","\n\t","\n"))? -
@gilad hoch 是的,但为什么'yield file.getName'不起作用?
-
@gilad hoch ive 我尝试在 if 语句周围加上括号,但不起作用
标签: scala