2016-03-28 113 views
0

这是我的Scala代码,它返回目录中的所有类文件名。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得到字符串的一个新的集合。我认为代码很丑陋,并且可能有更好的方式来处理这种模式(从现有的代码生成新类型的集合),比如这个代码,但是我有一个错误消息。

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

任何想法?

回答

4

是你要找的.map(...)? =)

从我看到做正确的方式,将

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