在Scala中对序列集进行排序

时间:2016-03-28 00:26:24

标签: scala for-loop collections

这是我的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方法返回文件类型类的集合,我必须使用foryield来获取新的String集合。我认为代码是丑陋的,并且可能有更好的方法来实现这种模式(从现有模式生成一种新类型的集合),例如这段代码,但我有一条错误消息。

d.listFiles.filter(_.getName.endsWith(".class")))
 .foreach(yield _.getName.replace(directory, "")).toList

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您正在寻找.map(...)吗? =)

从我看到正确的方法来做到这一点

d.listFiles.filter(...).map(_.getName.replace(directory, "")).toList