【问题标题】:Sequencing collections in ScalaScala 中的排序集合
【发布时间】: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 类型类的集合,我不得不使用 foryield 来获取一个新的 String 集合。我认为代码很丑陋,并且这种模式可能有更好的方法(从现有的集合生成一种新类型的集合),例如这个代码,但我有一条错误消息。

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

有什么想法吗?

【问题讨论】:

    标签: scala for-loop collections


    【解决方案1】:

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

    据我所知,正确的做法是

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

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      相关资源
      最近更新 更多