【发布时间】:2016-03-28 09:05:05
【问题描述】:
这是我的 Scala 代码,它返回目录中的所有类文件名。
import scala.collection.mutable._
import java.io.File
def getFiles(directory:String) = {
val files = ArrayBuffer[String]()
val d = new File(directory)
if (d.exists && d.isDirectory) {
(for (i <- d.listFiles.filter(_.getName.endsWith(".class"))) // <---
yield i.getName.replace(directory, "")).toList
} else {
List[String]()
}
}
listFiles 方法返回一个 File 类型类的集合,我不得不使用 for 和 yield 来获取一个新的 String 集合。我认为代码很丑陋,并且这种模式可能有更好的方法(从现有的集合生成一种新类型的集合),例如这个代码,但我有一条错误消息。
d.listFiles.filter(_.getName.endsWith(".class")))
.foreach(yield _.getName.replace(directory, "")).toList
有什么想法吗?
【问题讨论】:
标签: scala for-loop collections